Rust 当具体类型工作时,为什么引用同级字段的迭代器trait对象无法编译?
我想要一个迭代器,它指向同一结构的Rust 当具体类型工作时,为什么引用同级字段的迭代器trait对象无法编译?,rust,traits,lifetime,Rust,Traits,Lifetime,我想要一个迭代器,它指向同一结构的Vec 以下方法可以很好地工作(): struct Holder1>>, } fn保持器1_试验(){ 设vec=vec![1,2,3,4]; 让mut holder=Holder1{ vec, 迭代器:无, }; 让迭代器:Box>>, } fn保持器2_试验(){ 设vec=vec![1,2,3,4]; 让mut holder=Holder2{ vec, 迭代器:无, }; 让迭代器:Box>=Box::new(holder.vec.iter()); |^^
Vec
以下方法可以很好地工作():
struct Holder1>>,
}
fn保持器1_试验(){
设vec=vec![1,2,3,4];
让mut holder=Holder1{
vec,
迭代器:无,
};
让迭代器:Box>>,
}
fn保持器2_试验(){
设vec=vec![1,2,3,4];
让mut holder=Holder2{
vec,
迭代器:无,
};
让迭代器:Box>=Box::new(holder.vec.iter());
|^^^^^^^^^^^^^^^^借来的价值寿命不够长
...
18 | }
| -
| |
|“holder.vec”在借的时候掉在这里了
|当删除'holder'并同时运行'Holder2See;类型的析构函数时,可以在此处使用借阅。97%这与滴胶有关。由于slice::Iter
没有,编译器可以缩短借用生命周期,但是Box
不能做出这样的假设。无论如何,您应该只使用索引(如果您需要在结构中存储迭代器的话)。97%这与滴胶有关。由于slice::Iter
没有,编译器可以缩短借用生命周期,但是Box
不能做出这样的假设。无论如何,您应该只使用索引(如果您需要在结构中存储迭代器)。