繁体   English   中英

Rust 特征边界与类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM