# unistore-progress
进度报告能力 - UniStore 能力生态的一部分。
## 功能特性
- **进度追踪**: 追踪任务完成百分比
- **ETA 估算**: 基于历史速率估算剩余时间
- **消息更新**: 支持动态更新进度消息
- **订阅机制**: 观察者模式,支持多个监听者
- **子进度**: 支持嵌套进度(大任务包含小任务)
## 快速开始
```rust
use unistore_progress::{ProgressTracker, ProgressEvent};
// 创建进度追踪器
let tracker = ProgressTracker::new(100);
// 订阅进度更新
let mut rx = tracker.subscribe();
tokio::spawn(async move {
while let Ok(event) = rx.recv().await {
println!("进度: {:.1}% - {}", event.percentage(), event.message());
}
});
// 更新进度
tracker.advance(10);
tracker.set_message("正在处理文件...");
tracker.advance(40);
// 完成
tracker.finish();
```
## 与 UniStore 集成
```rust
use unistore_progress::ProgressTracker;
async fn process_files(files: Vec<PathBuf>) -> Result<(), Error> {
let tracker = ProgressTracker::new(files.len() as u64);
for file in files {
tracker.set_message(format!("处理: {}", file.display()));
process_file(&file).await?;
tracker.advance(1);
}
tracker.finish();
Ok(())
}
```
## License
MIT OR Apache-2.0