rust - 为什么 std::str::parse 的签名不使用特征绑定(bind)?

标签 rust traits

Rust 的 str 原始类型上的 parse 方法的签名是

pub fn parse<F>(&self) -> Result<F, <F as FromStr>::Err>

为什么不是下面这样呢?

pub fn parse<F: FromStr>(&self) -> Result<F, F::Err>

我认为原始类型转换可能会确保 Err 解析为 FromStr::Err,而不是 SomeOtherTrait::Err

仍然,在 parse 文档中给出以下行...

parse can parse any type that implements the FromStr trait

为什么没有 trait bound?

最佳答案

它确实使用特征边界,但是边界是使用 where 子句指定的。 Look closer :

pub fn parse<F>(&self) -> Result<F, <F as FromStr>::Err>
where
    F: FromStr,

关于rust - 为什么 std::str::parse 的签名不使用特征绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50316305/

相关文章:

timer - 如何使用 Tokio 产生许多可取消的计时器?

rust - 无法定义适当的防 rust 生命周期要求

rust - 在 Rust 中实现 PHP array_column

generics - 不安全队列实现

rust - 为什么对 usize 数字的减号操作不能为负数,以及 Rust 惯用的处理方法是什么?

iterator - 使用修改后的 `Chars` 迭代器时生命周期参数的数量错误

swift - 我可以在 Swift 中模拟 traits/mixins 吗?

rust - 包装函数返回迭代器时的生命周期问题

perl - 如果你有 Traits,你会停止使用接口(interface)、抽象基类和多重继承吗?

rust - 如何将向量与自身的反向版本进行比较?