【问题标题】:How to read implementors in Crate docs?如何阅读 Crate 文档中的实现者?
【发布时间】:2021-11-22 14:35:57
【问题描述】:

我正在尝试了解如何阅读 crate 文档,尤其是如何阅读实施者。

例如,在一个常见的 crate 中,例如 TryFrom,一个允许您在两种类型之间转换的 crate,实现者例如

impl TryFrom<i8> for u64impl TryFrom<isize> for u128impl 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)

有人可以简单描述一下如何阅读这些实现者吗?

TryFrom Crate Reference

【问题讨论】:

  • impl TryFrom<i8> for u64 为例,我的关键问题是 TryFrom 如何与 u64 关联或交互?如果我要实际实现impl TryFrom<i8> for u64,我会写成i8::try_from(a_u64_variable)还是u64::try_from(an_i8_variable)
  • 这意味着带有通用参数i8TryFrom trait 是为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


【解决方案1】:

implementors 部分的基本意思是:这个 crate 的开发者认为如果你可以立即将这个 trait 用于常见类型会很好,所以我们继续添加了一堆实现。因此,没有关于它的“如果我要实际实施……”。所有这些都已经实现并可供您使用。

【讨论】:

    【解决方案2】:

    impl TryFrom<i8> for u64为例,解读这个实现器的方式是,它接受一个i8,并打算输出一个u64

    【讨论】:

      猜你喜欢
      • 2013-12-24
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      相关资源
      最近更新 更多