小编Aym*_*our的帖子

Rust如何处理引用计数类型的"隔离岛"(引用循环)场景?

Rust如何处理Rcs和Arcs 的"隔离岛"场景?

"隔离岛"是这样一种情况,其中object A包含指向object的对象,B而object B包含指向object的指针A,但是在其他任何地方都没有指向任何对象的指针.

Rust是否足够智能来检测这个或是否会导致内存泄漏?

reference-counting rust

10
推荐指数
1
解决办法
125
查看次数

Rust 中带有 RwLockGuard 的 HashMap 记录的游标

我是 Rust 的新手,我正在尝试实现一个简单的、线程安全的内存键值存储,HashMapRwLock. 我的代码如下所示:

use std::sync::{ Arc, RwLock, RwLockReadGuard };
use std::collections::HashMap;
use std::collections::hash_map::Iter;

type SimpleCollection = HashMap<String, String>;

struct Store(Arc<RwLock<SimpleCollection>>);

impl Store {
    fn new() -> Store { return Store(Arc::new(RwLock::new(SimpleCollection::new()))) }

    fn get(&self, key: &str) -> Option<String> {
        let map = self.0.read().unwrap();
        return map.get(&key.to_string()).map(|s| s.clone());
    }

    fn set(&self, key: &str, value: &str) {
        let mut map = self.0.write().unwrap();
        map.insert(key.to_string(), value.to_string());
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,这段代码工作正常。问题是我正在尝试实现一个scan()函数,该函数返回一个Cursor可用于迭代所有记录的对象。我希望Cursor对象持有一个RwLockGuard,它在游标本身被释放之前不会被释放(基本上我不想在游标处于活动状态时允许修改)。

我试过这个:

use ...

type …
Run Code Online (Sandbox Code Playgroud)

rust rwlock

6
推荐指数
1
解决办法
568
查看次数

标签 统计

rust ×2

reference-counting ×1

rwlock ×1