【发布时间】:2021-11-22 14:35:57
【问题描述】:
我正在尝试了解如何阅读 crate 文档,尤其是如何阅读实施者。
例如,在一个常见的 crate 中,例如 TryFrom,一个允许您在两种类型之间转换的 crate,实现者例如
impl TryFrom<i8> for u64 或 impl TryFrom<isize> for u128 或
impl TryFrom<NonZeroI16> for NonZeroI8
可以在页面底部看到
我无法准确理解如何阅读它们
以impl TryFrom<i8> for u64 为例,TryFrom<i8> 如何与u64 关联或交互?如果我要实际实现impl TryFrom<i8> for u64,我会写成i8::try_from(a_u64_variable)还是u64::try_from(an_i8_variable)
有人可以简单描述一下如何阅读这些实现者吗?
【问题讨论】:
-
以
impl TryFrom<i8> for u64为例,我的关键问题是 TryFrom如何与 u64 关联或交互?如果我要实际实现 impl TryFrom<i8> for u64,我会写成i8::try_from(a_u64_variable)还是u64::try_from(an_i8_variable) -
这意味着带有通用参数
i8的TryFromtrait 是为u64(即Self == i64)实现的。那是什么意思?这取决于特征的声明。 -
对于
std::convert::TryFrom,例如,你可以看到它有一个方法from(value: T) -> Result<Self, Self::Error>,用泛型参数代替from(value: i8) -> Result<u64, TryFromIntError>,这样你就可以做到let _: u64 = <u64 as TryFrom<i8>>::try_from(0i8).unwrap(); -
^ 这个解释正是我想要的。谢谢。
标签: rust