Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 当具体类型工作时,为什么引用同级字段的迭代器trait对象无法编译?_Rust_Traits_Lifetime - Fatal编程技术网

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
不能做出这样的假设。无论如何,您应该只使用索引(如果您需要在结构中存储迭代器)。