0

parseRuststr原始类型上的方法签名是

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 特征的类型

为什么没有特征绑定?

4

2 回答 2

6

它确实使用了一个 trait bound,但是这个边界是使用where子句指定的。仔细看

pub fn parse<F>(&self) -> Result<F, <F as FromStr>::Err>
where
    F: FromStr,
于 2018-05-13T12:52:47.983 回答
0

<F as FromStr>::Err表示来自的实现的关联Err类型。FFromStr

为什么不如下?

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

因为F可以实现许多不同的特征,所有这些特征都可能具有不同的关联Err类型。此语法确保它获得与F' 的FromStr实现特别关联的类型。

于 2018-05-13T14:46:06.590 回答