qubit-thread-pool 0.4.0

Dynamic and fixed thread pool executor services for Qubit Rust libraries
Documentation
use std::sync::atomic::{
    AtomicU8,
    Ordering,
};

use qubit_thread_pool::delayed::delayed_task_state::{
    DelayedTaskState,
    cancel_task_state,
    is_task_cancelled,
    start_task_state,
};

#[test]
fn test_delayed_task_state_transitions_from_pending_once() {
    let state = AtomicU8::new(DelayedTaskState::PENDING);

    assert!(cancel_task_state(&state));
    assert!(DelayedTaskState::is_cancelled(&state));
    assert!(is_task_cancelled(&state));
    assert!(!cancel_task_state(&state));
    assert!(!start_task_state(&state));
}

#[test]
fn test_delayed_task_state_start_prevents_later_cancellation() {
    let state = AtomicU8::new(DelayedTaskState::PENDING);

    assert!(start_task_state(&state));
    assert_eq!(state.load(Ordering::Acquire), DelayedTaskState::STARTED);
    assert!(!cancel_task_state(&state));
    assert!(!DelayedTaskState::is_cancelled(&state));
}