Skip to main content

qubit_progress/reporter/impls/
stderr_progress_reporter.rs

1/*******************************************************************************
2 *
3 *    Copyright (c) 2025 - 2026 Haixing Hu.
4 *
5 *    SPDX-License-Identifier: Apache-2.0
6 *
7 *    Licensed under the Apache License, Version 2.0.
8 *
9 ******************************************************************************/
10use crate::{
11    model::ProgressEvent,
12    reporter::{
13        ProgressReporter,
14        WriterProgressReporter,
15    },
16};
17
18/// Progress reporter that writes human-readable metric snapshots to stderr.
19pub struct StderrProgressReporter {
20    /// Writer-backed reporter targeting standard error.
21    inner: WriterProgressReporter<std::io::Stderr>,
22}
23
24impl StderrProgressReporter {
25    /// Creates a reporter writing to standard error.
26    ///
27    /// # Returns
28    ///
29    /// A stderr progress reporter.
30    #[inline]
31    pub fn new() -> Self {
32        Self {
33            inner: WriterProgressReporter::from_writer(std::io::stderr()),
34        }
35    }
36}
37
38impl Default for StderrProgressReporter {
39    /// Creates a default stderr progress reporter.
40    ///
41    /// # Returns
42    ///
43    /// A stderr progress reporter.
44    #[inline]
45    fn default() -> Self {
46        Self::new()
47    }
48}
49
50impl ProgressReporter for StderrProgressReporter {
51    /// Writes one line for every metric snapshot in the event.
52    ///
53    /// # Parameters
54    ///
55    /// * `event` - Progress event to report.
56    #[inline]
57    fn report(&self, event: &ProgressEvent) {
58        self.inner.report(event);
59    }
60}