unistore_progress/lib.rs
1//! # unistore-progress
2//!
3//! 进度报告能力 - UniStore 能力生态的一部分。
4//!
5//! ## 功能特性
6//!
7//! - **进度追踪**: 追踪任务完成百分比
8//! - **ETA 估算**: 基于历史速率估算剩余时间
9//! - **消息更新**: 支持动态更新进度消息
10//! - **订阅机制**: 观察者模式,支持多个监听者
11//! - **多阶段支持**: 支持嵌套进度(大任务包含小任务)
12//!
13//! ## 快速开始
14//!
15//! ```rust
16//! use unistore_progress::ProgressTracker;
17//!
18//! // 创建进度追踪器(100 个任务)
19//! let tracker = ProgressTracker::new(100);
20//!
21//! // 更新进度
22//! tracker.advance(10);
23//! tracker.set_message("正在处理...");
24//!
25//! // 获取当前状态
26//! assert_eq!(tracker.current(), 10);
27//! assert!((tracker.percentage() - 10.0).abs() < 0.001);
28//!
29//! // 完成
30//! tracker.finish();
31//! assert!(tracker.is_finished());
32//! ```
33//!
34//! ## 多阶段进度
35//!
36//! ```rust
37//! use unistore_progress::{MultiStageTracker, Stage};
38//!
39//! let tracker = MultiStageTracker::new(vec![
40//! Stage { name: "下载".into(), weight: 0.3, total: 100 },
41//! Stage { name: "解压".into(), weight: 0.2, total: 50 },
42//! Stage { name: "安装".into(), weight: 0.5, total: 200 },
43//! ]);
44//!
45//! // 第一阶段进度
46//! tracker.advance(0, 50);
47//! ```
48
49// === 内部模块 ===
50mod config;
51mod deps;
52mod error;
53mod event;
54mod multi_stage;
55mod tracker;
56
57// === 对外接口(SDK)===
58// 统一从 lib.rs 导出所有公开类型
59
60pub use config::ProgressConfig;
61pub use error::{ProgressError, ProgressResult};
62pub use event::ProgressEvent;
63pub use multi_stage::{MultiStageTracker, Stage};
64pub use tracker::ProgressTracker;
65
66// === 重导出 tokio 类型(便于用户使用)===
67pub use tokio::sync::broadcast::Receiver as ProgressReceiver;