【问题标题】:Rust trait bounds with typesRust 特征边界与类型
【发布时间】:2020-08-17 00:05:39
【问题描述】:

我在阅读hyperium/http源代码,发现this

pub fn put<T>(uri: T) -> Builder
 where
    Uri: TryFrom<T>,
    <Uri as TryFrom<T>>::Error: Into<crate::Error>,

{
    Builder::new().method(Method::PUT).uri(uri)
}   

在这个 sn-p 中,Uri 是一个类型,T 是一个通用元素。 我一直看到where T: SomeTrait 的构造,但没有看到SomeType: SomeTrait&lt;T&gt;。 这种结构有名称吗?它是否记录在某处?

【问题讨论】:

    标签: generics rust traits


    【解决方案1】:

    引用https://doc.rust-lang.org/reference/trait-bounds.html#higher-ranked-trait-bounds:

    使用物品时必须满足物品的界限。当类型 检查和借用检查通用项目,边界可用于 确定为一个类型实现了一个特征。例如,给定 Ty: Trait

    在泛型函数的主体中,来自Trait 的方法可以在Ty 值上调用。 Trait 上的类似关联常量可以是 用过的。 可以使用来自Trait 的关联类型。 具有T: Trait 边界的泛型函数和类型可以与Ty 一起用于T

    没有说明Ty 是类型参数(而不是固定类型)。所以我会说它只是一个 trait bound,尽管在 Rust 教程中并不经常遇到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 2021-06-07
      • 2016-11-29
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 2020-12-31
      相关资源
      最近更新 更多