为什么std :: str :: parse的签名没有使用特征绑定?

时间:2018-05-13 12:50:46

标签: rust traits

Rust parse基元类型上str方法的签名是

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可以解析实现FromStr特征的任何类型

为什么没有特质限制?

1 个答案:

答案 0 :(得分:1)

table1(area, name)表示来自<F as FromStr>::Err的{​​{1}}实施的相关Err类型。

  

为什么不如下?

F

因为FromStr可以实现许多不同的特征,所有特征都可能具有不同的关联pub fn parse<F: FromStr>(&self) -> Result<F, F::Err> 类型。此语法可确保它获得与F的{​​{1}}实现特定关联的类型。