锈蚀性状与类型的界限

问题描述 投票:0回答:1

我在看 锔子 源代码,我发现 这个:

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)
}   

在这个片段中: Uri 是一种类型和 T 通用元素。我一直看到的结构是 where T: SomeTrait但不是 SomeType: SomeTrait<T>.这个结构有名字吗,有什么地方记载吗?

generics rust traits
1个回答
1
投票

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

当使用一个项目时,必须满足该项目的界限。当类型检查和借用检查一个通用项时,界限可以用来确定一个类型的特质是实现的。例如,给定 Ty: Trait

在一个通用函数的主体中,从 Trait 可望而不可即 Ty 值。同样的,相关的常数在 Trait 可以使用。 相关类型从 Trait 可以使用。 的通用函数和类型。T: Trait 边界可以与 Ty 被用于 T.

没有任何规定 Ty 是一个类型参数(而不是固定类型)。所以我说这只是一个特质约束,尽管公认在Rust教程中并不经常遇到。

© www.soinside.com 2019 - 2024. All rights reserved.