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>
.这个结构有名字吗,有什么地方记载吗?
引用 https:/doc.rust-lang.orgreferencetrait-bounds.html#higher-ranked-trait-bounds。:
当使用一个项目时,必须满足该项目的界限。当类型检查和借用检查一个通用项时,界限可以用来确定一个类型的特质是实现的。例如,给定
Ty: Trait
在一个通用函数的主体中,从
Trait
可望而不可即Ty
值。同样的,相关的常数在Trait
可以使用。 相关类型从Trait
可以使用。 的通用函数和类型。T: Trait
边界可以与Ty
被用于T
.
没有任何规定 Ty
是一个类型参数(而不是固定类型)。所以我说这只是一个特质约束,尽管公认在Rust教程中并不经常遇到。