小编Luk*_*uke的帖子

从互斥量中借用数据"借来的价值不够长"

如何在互斥体内的数据上返回迭代器,互斥体本身包含在结构中.编译器给出的错误是"借来的价值不够长".

如何将值的生命周期延伸到外部范围?

这是我想要实现的最小演示.

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

2
推荐指数
1
解决办法
482
查看次数

标签 统计

rust ×1