相关疑难解决方法(0)

在线程之间共享对特征实例的引用

我正在使用Rust的并发性并尝试绕过Send/ Sync/ Arc/ Mutex.我在共享对特征实例的引用时遇到问题,该实例存在于HashMap:

use std::{collections::HashMap, sync::Arc, thread, time::Duration};

#[derive(Debug)]
struct A {
    foo: u8,
}

trait Foo {
    fn get_foo(&self) -> u8;
}

impl Foo for A {
    fn get_foo(&self) -> u8 {
        self.foo
    }
}

fn main() {
    let a = Arc::new(A { foo: 8 });

    let mut map: HashMap<u8, Arc<Foo>> = HashMap::new();
    map.insert(8u8, a);

    for _ in 0..2 {
        let a = map.get(&8u8).expect("boom");
        let a = a.clone();
        thread::spawn(move || { …
Run Code Online (Sandbox Code Playgroud)

rust

11
推荐指数
2
解决办法
2263
查看次数

标签 统计

rust ×1