2个不稳定版本

0.2.0 2024年3月18日
0.1.0 2022年2月17日

#545 in Unix API

每月26次 下载
用于 2 crates

MITGPL-3.0 许可证

6KB
55

r2d2-alpm

用于创建处理多个连接到Arch Linux Alpm 数据库的 r2d2::Pool 的类型和实用工具。

用法

创建一个在(例如)一些Rayon线程内委托 Alpm 连接的 Pool

use r2d2::Pool;
use r2d2_alpm::AlpmManager;
use rayon::prelude::*;

let mngr = AlpmManager::from_file("/etc/pacman.conf").unwrap();
let pool = Pool::builder().max_size(4).build(mngr).unwrap();

(0..10).into_par_iter().for_each(|n| {
    // `Pool::get` will wait for a configurable length
    // of time for a free connection before giving up.
    if let Ok(alpm) = pool.get() {
        // Use the ALPM handle freely here.
    }
});

类似于 std::sync::ArcPool 便宜到可以 Clone,并且可以自由传递到子线程。

许可证:MIT


lib.rs:

用于创建处理多个连接到Arch Linux Alpm 数据库的 r2d2::Pool 的类型和实用工具。

用法

创建一个在(例如)一些Rayon线程内委托 Alpm 连接的 Pool

use r2d2::Pool;
use r2d2_alpm::AlpmManager;
use rayon::prelude::*;

let mngr = AlpmManager::from_file("/etc/pacman.conf").unwrap();
let pool = Pool::builder().max_size(4).build(mngr).unwrap();

(0..10).into_par_iter().for_each(|n| {
    // `Pool::get` will wait for a configurable length
    // of time for a free connection before giving up.
    if let Ok(alpm) = pool.get() {
        // Use the ALPM handle freely here.
    }
});

类似于 std::sync::ArcPool 便宜到可以 Clone,并且可以自由传递到子线程。

依赖关系

~1.2–6MB
~32K SLoC