#mutex #local #sync #mut #self #fn-once #lock

ctxs

显式的代码上下文管理设施

2 releases

new 0.1.1 Jan 25, 2025
0.1.0 Jan 24, 2025

#350 in Concurrency

Download history 222/week @ 2025-01-22

222 downloads per month
Used in rsgl

MIT license

6KB

Ctxs

此 crate 提供显式的上下文管理设施,它通常对 GUI 程序有用

示例

以下代码是对 Mutex 显式上下文的简易实现

use std::sync::Mutex;
impl<T> ContextMut<T> for Mutex<T> {
    fn context_mut<R, F: FnOnce(&mut T) -> R>(&self, local: F) -> R {
        let mut lock = self.lock().unwrap();
        local(&mut *lock)
    }
}

使用显式上下文

use std::sync::Mutex;
use ctxs::*;

static VALUE: Mutex<i32> = Mutex::new(0);

fn main() {
    VALUE.context_mut(|value| {
        *value += 1;
    });
    println!("Value: {}", VALUE.context_mut(|value| *value));
}

No runtime deps