我正在转换一些旧的 Rust 代码以在 1.0.0 上工作。我需要转换一个接受字符迭代器的函数,它曾经是这样写的:
fn f<I: Iterator<char>>(char_iter: I)
既然Iterator
不带参数,那么对I
的约束就只能是I:Iterator
了。元素类型则为 I::Item
。有没有办法表达 I::Item
= char
的约束? (或者我应该完全以另一种方式来做这件事吗?)
最佳答案
fn f<I: Iterator<Item = char>>(char_iter: I)
最近将关联类型添加到该语言中,并且更新了许多库类型以利用它们。例如,Iterator
定义了一个关联类型,名为 Item
。您可以通过写入关联类型的名称、等号和您需要的类型来添加对关联类型的约束。
关于rust - 如何约束迭代器的元素类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27893501/