unistore-progress 0.1.0

Progress tracking capability for UniStore
Documentation
//! # unistore-progress
//!
//! 进度报告能力 - UniStore 能力生态的一部分。
//!
//! ## 功能特性
//!
//! - **进度追踪**: 追踪任务完成百分比
//! - **ETA 估算**: 基于历史速率估算剩余时间
//! - **消息更新**: 支持动态更新进度消息
//! - **订阅机制**: 观察者模式,支持多个监听者
//! - **多阶段支持**: 支持嵌套进度(大任务包含小任务)
//!
//! ## 快速开始
//!
//! ```rust
//! use unistore_progress::ProgressTracker;
//!
//! // 创建进度追踪器(100 个任务)
//! let tracker = ProgressTracker::new(100);
//!
//! // 更新进度
//! tracker.advance(10);
//! tracker.set_message("正在处理...");
//!
//! // 获取当前状态
//! assert_eq!(tracker.current(), 10);
//! assert!((tracker.percentage() - 10.0).abs() < 0.001);
//!
//! // 完成
//! tracker.finish();
//! assert!(tracker.is_finished());
//! ```
//!
//! ## 多阶段进度
//!
//! ```rust
//! use unistore_progress::{MultiStageTracker, Stage};
//!
//! let tracker = MultiStageTracker::new(vec![
//!     Stage { name: "下载".into(), weight: 0.3, total: 100 },
//!     Stage { name: "解压".into(), weight: 0.2, total: 50 },
//!     Stage { name: "安装".into(), weight: 0.5, total: 200 },
//! ]);
//!
//! // 第一阶段进度
//! tracker.advance(0, 50);
//! ```

// === 内部模块 ===
mod config;
mod deps;
mod error;
mod event;
mod multi_stage;
mod tracker;

// === 对外接口(SDK)===
// 统一从 lib.rs 导出所有公开类型

pub use config::ProgressConfig;
pub use error::{ProgressError, ProgressResult};
pub use event::ProgressEvent;
pub use multi_stage::{MultiStageTracker, Stage};
pub use tracker::ProgressTracker;

// === 重导出 tokio 类型(便于用户使用)===
pub use tokio::sync::broadcast::Receiver as ProgressReceiver;