qubit-executor 0.3.4

Executor abstractions, task handles, and basic executor implementations for Qubit Rust libraries
Documentation
/*******************************************************************************
 *
 *    Copyright (c) 2025 - 2026 Haixing Hu.
 *
 *    SPDX-License-Identifier: Apache-2.0
 *
 *    Licensed under the Apache License, Version 2.0.
 *
 ******************************************************************************/
use std::io;

use qubit_executor::{
    CancelResult,
    TaskExecutionError,
    task::spi::TaskEndpointPair,
};

/// Test observable handle state transitions before and after terminal completion.
#[test]
fn test_task_handle_state_transitions_are_observable() {
    let (handle, completion) = TaskEndpointPair::<usize, io::Error>::new().into_tracked_parts();
    assert!(!handle.is_done());

    assert_eq!(handle.cancel(), CancelResult::Cancelled);
    assert!(handle.is_done());
    assert!(!completion.run(|| Ok(42)));
    assert!(matches!(handle.get(), Err(TaskExecutionError::Cancelled)));
}