我正在尝试运行这个
use std::collections::BTreeSet;
pub struct IntoIter<T> {
iter: BTreeSet<T>::IntoIter,
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
这失败了
use std::collections::BTreeSet;
pub struct IntoIter<T> {
iter: BTreeSet<T>::IntoIter,
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
为什么关联类型不明确?
“模棱两可”在这里似乎有点误导性的措辞。此示例产生相同的错误消息:
struct Foo;
pub struct Bar {
iter: Foo::Baz,
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
我不确定,但我发现Baz在标准库中不太可能有一个关联类型,更不可能有两个让它变得模棱两可!
更有可能的是,这种语法不够具体。这是完全合理的,有可能是,可能有多种性状Baz相关的类型。因此,您必须指定要使用以下关联类型的特征:
struct Foo;
pub struct Bar {
iter: <Vec<u8> as IntoIterator>::IntoIter,
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
986 次 |
| 最近记录: |