带类型的Rust特征范围

yageek:

我在阅读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>这个结构有名称吗,有文件记载吗?

phimuemue;

引用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Rust的复制类型与借阅特征相反?

Rust:如何限制派生特征的类型参数

Rust:为相关类型实现特征“从”(错误)

特征范围中的引用关联类型

如何声明具有带类型参数的特征的函数的实现?

将较高等级的特征范围与关联类型结合在一起时,为什么会出现Rust编译错误?

Rust ndarray类型错误:未实现特征绑定

如何在rust的通用特征上实现特定类型?

Rust中具有特征的对象的通用类型转换

如何获得在Rust中实现特定特征的类型列表?

Rust无法为通用特征impl推断返回类型

如何在关联类型上定义特征范围?

Rust:缩短泛型类型范围

具有比上位特征更严格的关联类型范围的特征

如何将Rust的函数类型中的特征放入数组的类型中?

Scala:类型参数不符合特征Subtractable的类型参数范围

为什么类型特征不能与名称空间范围中的类型一起使用?

如何消除Rust的特征?

Rust:条件特征继承

普通类型的类型特征

我可以实现将信息添加到Rust中的外部类型的特征吗?

Rust错误:无法推断出足够的类型信息来定位特征的隐含含义

Rust中的特征与Haskell中的类型类有什么区别?

rust-具有特征的泛型函数的返回类型

仅在满足类型约束的情况下有条件地实现Rust特征

如何在 Rust 中绑定“输出”类型的运算符特征?

Rust类型不匹配,使用闭包特征别名参数解析`for <'r> ...`

如何在不知道确切类型的情况下在 Rust 中组合特征操作

在scala中“不符合特征构建器的类型参数范围”是什么意思?