为什么嵌套的关联类型路径被认为是不明确的?
fn flatten<I>(iter: I) -> Option<I::Item::Item>
where
I: Iterator,
I::Item: IntoIterator,
{
None
}
error[E0223]: ambiguous associated type
--> src/lib.rs:1:34
|
1 | fn flatten<I>(iter: I) -> Option<I::Item::Item>
| ^^^^^^^^^^^^^ help: use fully-qualified syntax: `<<I as Iterator>::Item as Trait>::Item`
如果没有完全限定的语法,编译器不应该解析路径吗?我只能提到一种类型,所以我不明白为什么它是模棱两可的.在这种简单的情况下,这并不是一个真正的问题,但在更复杂的用例中,它会变得痛苦:
fn blah() -> <<<<A as B>::C as D>::E as F>::G as H>::I as J>::K> {}
这是编译器的限制还是预期的行为?