disrupt-rs 1.1.0

Concurrent Ringbuffer inspired by the LMAX Disruptor.
Documentation
use core_affinity::CoreId;

pub(crate) fn cpu_has_core_else_panic(id: usize) {
    let has_core = core_affinity::get_core_ids()
        .map(|ids| ids.iter().any(|core_id| core_id.id == id))
        .unwrap_or(false);

    if !has_core {
        panic!("No core with ID={} is available.", id);
    }
}

pub(crate) fn set_affinity_if_defined(core_affinity: Option<CoreId>, thread_name: &str) {
    if let Some(core_id) = core_affinity {
        let got_pinned = core_affinity::set_for_current(core_id);
        if !got_pinned {
            eprintln!(
                "Could not pin processor thread '{}' to {:?}.",
                thread_name, core_id
            );
        }
    }
}