如何在互斥体内的数据上返回迭代器,互斥体本身包含在结构中.编译器给出的错误是"借来的价值不够长".
如何将值的生命周期延伸到外部范围?
这是我想要实现的最小演示.
use std::sync::{Mutex, Arc};
use std::vec::{Vec};
use std::slice::{Iter};
#[derive(Debug)]
struct SharedVec {
pub data: Arc<Mutex<Vec<u32>>>,
}
impl SharedVec {
fn iter(& self) -> Iter<u32> {
self.data.lock().unwrap().iter()
}
}
fn main() {
let sv = SharedVec {
data: Arc::new(Mutex::new(vec![1, 2, 3, 4, 5]))
};
for element in sv.data.lock().unwrap().iter() { // This works
println!("{:?}", element);
}
for element in sv.iter() { // This does not work
println!("{:?}", element);
}
}
Run Code Online (Sandbox Code Playgroud)
Rust操场链接:http://is.gd/voukyN
rust ×1