[英]Rust trait bounds with types
我正在阅读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
在通用 function 的主体中,可以对
Ty
值调用来自Trait
的方法。 同样可以使用Trait
上的相关常量。 可以使用来自Trait
的关联类型。 带有T: Trait
边界可以与Ty
用于T
一起使用。
没有说明Ty
是类型参数(而不是固定类型)。 所以我想说这只是一个特征绑定,尽管在 Rust 教程中不经常遇到。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.