unistore-progress
进度报告能力 - UniStore 能力生态的一部分。
功能特性
- 进度追踪: 追踪任务完成百分比
- ETA 估算: 基于历史速率估算剩余时间
- 消息更新: 支持动态更新进度消息
- 订阅机制: 观察者模式,支持多个监听者
- 子进度: 支持嵌套进度(大任务包含小任务)
快速开始
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 集成
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