unistore-progress

Crates.iounistore-progress
lib.rsunistore-progress
version0.1.0
created_at2026-01-20 11:03:57.690876+00
updated_at2026-01-20 11:03:57.690876+00
descriptionProgress tracking capability for UniStore
homepagehttps://github.com/yangbo1317/unistore
repositoryhttps://github.com/yangbo1317/unistore
max_upload_size
id2056356
size47,408
(yangbo1317)

documentation

https://docs.rs/unistore-progress

README

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

Commit count: 0

cargo fmt