qubit-progress 0.4.6

Generic progress reporting abstractions 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 crate::{
    model::ProgressEvent,
    reporter::{
        ProgressReporter,
        WriterProgressReporter,
    },
};

/// Progress reporter that writes human-readable events to stdout.
#[derive(Debug)]
pub struct StdoutProgressReporter {
    /// Writer-backed reporter targeting standard output.
    inner: WriterProgressReporter<std::io::Stdout>,
}

impl StdoutProgressReporter {
    /// Creates a reporter writing to standard output.
    #[inline]
    pub fn new() -> Self {
        Self {
            inner: WriterProgressReporter::from_writer(std::io::stdout()),
        }
    }
}

impl Default for StdoutProgressReporter {
    #[inline]
    fn default() -> Self {
        Self::new()
    }
}

impl ProgressReporter for StdoutProgressReporter {
    #[inline]
    fn report(&self, event: &ProgressEvent) {
        self.inner.report(event);
    }
}