如何解决使用std :: iter :: IntoIterator的代码不起作用
为什么以下Rust代码无法编译?
let yy: dyn std::iter::IntoIterator<Item = i32,IntoIter = std::vec::IntoIter<i32>> =
std::vec::Vec::new();
error[E0308]: mismatched types
--> src/main.rs:30:9
|
29 | let yy: dyn std::iter::IntoIterator<Item = i32,IntoIter = std::vec::IntoIter<i32>> =
| --------------------------------------------------------------------------- expected due to this
30 | std::vec::Vec::new();
| ^^^^^^^^^^^^^^^^^^^^ expected trait object `dyn std::iter::IntoIterator`,found struct `std::vec::Vec`
|
= note: expected trait object `dyn std::iter::IntoIterator<IntoIter = std::vec::IntoIter<i32>,Item = i32>`
found struct `std::vec::Vec<_>`
根据我的理解,这应该编译,因为there is:
impl<T> IntoIterator for Vec<T>
解决方法
在this page的开头,您可以阅读:
此结构是通过Vec上的into_iter方法创建的
我不确定您想要什么,但是编译器可以接受。
let yy: &dyn std::iter::IntoIterator<
Item = i32,IntoIter = std::vec::IntoIter<i32>,> = &std::vec::Vec::new().into_iter();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。