1 unstable release

0.1.0 Feb 17, 2022

#11 in #alpm

26 downloads per month
Used in aura-pm

MIT and GPL-3.0 licenses

5KB

r2d2-alpm

Types and utilities for the spawing of a r2d2::Pool that handles multiple connections to an Arch Linux Alpm database.

Usage

To create a Pool that delegates Alpm connections within (for instance) some Rayon threads:

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.
    }
});

Like std::sync::Arc, Pool is cheap to Clone, and can be passed around freely to subthreads.

License: MIT


lib.rs:

Types and utilities for the spawing of a [r2d2::Pool] that handles multiple connections to an Arch Linux [Alpm] database.

Usage

To create a Pool that delegates [Alpm] connections within (for instance) some Rayon threads:

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.
    }
});

Like [std::sync::Arc], Pool is cheap to [Clone], and can be passed around freely to subthreads.

Dependencies

~1.2–5MB
~82K SLoC