我在阅读hyperium / http源代码,发现了这一点:
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.org/reference/trait-bounds.html#higher-ranked-trait-bounds:
使用项目时,必须满足项目的界限。在进行类型检查和借阅检查通用项目时,可以使用边界来确定是否为类型实现了特征。例如,给定
Ty: Trait
在泛型函数的主体中,from的方法
Trait
可以在Ty
值上调用。同样Trait
可以使用上的关联常量。Trait
可以使用来自的关联类型。具有T: Trait
界限的泛型函数和类型可以与用于一起Ty
使用T
。
没有任何声明Ty
是类型参数(而不是固定类型)。所以我想说,这只是一个特征绑定,尽管诚然在Rust教程中很少遇到。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句