如何在一個互斥體中的數據上返回一個迭代器,該互斥體本身包含在結構中。編譯器給出的錯誤是「借來的價值不夠長」。借用互斥量的數據「借用的值不夠長」
如何獲取值的生命週期以擴展到外部範圍?
這是我試圖實現的最小的演示。
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);
}
}
鏽操場鏈接:http://is.gd/voukyN
謝謝你的詳細解釋。 – Luke