理解 Rust 中的通用 FromIterator
Understanding Generic FromIterator in Rust
我是 Rust 的新手,我发现自己迷失在第二行中。我该如何解释它?哪个是我可以用来转换为 SimpleLinkedList
的交互器?
impl<T> FromIterator<T> for SimpleLinkedList<T> {
fn from_iter<I: IntoIterator<Item = T>>(_iter: I) -> Self {
unimplemented!()
}
}
I found myself lost in this second line. How can I interpreted it?
什么部分? from_iter
被定义为在类型 I
上参数化的泛型函数。然后该类型受限(意味着它必须实现)IntoIterator<Item=T>
.
IntoIterator<Item=T>
表示类型可以迭代(转换为 Iterator
)并产生 T
。在其他语言的行话中,它是 Ts.
的一个 iterable
所以 from_iter
是一个通用函数,其输入是 SimpleLinkedList
应包含的任何项目的迭代ble (IntoIterator
)。
Which one would be the interator
_iter.into_iter()
将是输入迭代器。您也可以使用 for 循环在 _iter
上进行迭代,因为它使用 IntoIterator
特征将其 RHS 隐式转换为迭代器。
初看起来很吓人,但实现起来非常简单。
impl<T> FromIterator<T> for SimpleLinkedList<T> {
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self {
let mut list = SimpleLinkedList::new();
for item in iter {
list.push(item);
}
list
}
}
要知道的关键是实现特征 IntoIterator
的类型可以在 for-in
循环中使用。 Item = T
仅表示 T
类型的迭代器 returns 项。您只需遍历 iter
并将项目推送到您的 SimpleLinkedList
结构中即可进行转换。
我是 Rust 的新手,我发现自己迷失在第二行中。我该如何解释它?哪个是我可以用来转换为 SimpleLinkedList
的交互器?
impl<T> FromIterator<T> for SimpleLinkedList<T> {
fn from_iter<I: IntoIterator<Item = T>>(_iter: I) -> Self {
unimplemented!()
}
}
I found myself lost in this second line. How can I interpreted it?
什么部分? from_iter
被定义为在类型 I
上参数化的泛型函数。然后该类型受限(意味着它必须实现)IntoIterator<Item=T>
.
IntoIterator<Item=T>
表示类型可以迭代(转换为 Iterator
)并产生 T
。在其他语言的行话中,它是 Ts.
所以 from_iter
是一个通用函数,其输入是 SimpleLinkedList
应包含的任何项目的迭代ble (IntoIterator
)。
Which one would be the interator
_iter.into_iter()
将是输入迭代器。您也可以使用 for 循环在 _iter
上进行迭代,因为它使用 IntoIterator
特征将其 RHS 隐式转换为迭代器。
初看起来很吓人,但实现起来非常简单。
impl<T> FromIterator<T> for SimpleLinkedList<T> {
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self {
let mut list = SimpleLinkedList::new();
for item in iter {
list.push(item);
}
list
}
}
要知道的关键是实现特征 IntoIterator
的类型可以在 for-in
循环中使用。 Item = T
仅表示 T
类型的迭代器 returns 项。您只需遍历 iter
并将项目推送到您的 SimpleLinkedList
结构中即可进行转换。