#mutex #rwlock #future #futures #async

future-parking_lot

为 parking_lot 提供尽可能简单的 Future 实现

7 个版本

0.3.3 2019年11月7日
0.3.2-alpha.22019年8月28日
0.2.0-alpha.22019年8月22日
0.1.1 2019年6月28日

#937 in 并发

Download history 36/week @ 2023-10-23 51/week @ 2023-10-30 25/week @ 2023-11-06 29/week @ 2023-11-13 48/week @ 2023-11-20 62/week @ 2023-11-27 37/week @ 2023-12-04 37/week @ 2023-12-11 55/week @ 2023-12-18 47/week @ 2023-12-25 20/week @ 2024-01-01 34/week @ 2024-01-08 28/week @ 2024-01-15 69/week @ 2024-01-22 64/week @ 2024-01-29 42/week @ 2024-02-05

每月209次下载
2 个 crate 使用

Apache-2.0/MIT

29KB
669

future-parking_lot

这是为 parking_lot 提供的尽可能简单的 Future 实现。得益于 async/await 功能,现在它可以直接在 Mutex<T>RwLock<T> 上运行。

示例

use std::sync::Arc;

use parking_lot::RwLock;

use future_parking_lot::rwlock::{FutureReadable, FutureWriteable};

use lazy_static::lazy_static;

lazy_static! {
    static ref LOCK: Arc<RwLock<Vec<String>>> = Arc::new(RwLock::new(Vec::new()));
}

#[tokio::main]
async fn main() -> Result<(), ()> {
    {
        let mut v = LOCK.future_write().await;
        v.push(String::from("It works!"));
    }

    let v = LOCK.future_read().await;
    assert!(v.len() == 1 && v[0] == "It works!");

    Ok(())
}

lib.rs:

future-parking_lot

为 parking_lot 提供的简单 Future 实现

依赖项

~0.8–1MB
~17K SLoC