4 个版本 (2 个破坏性更新)
0.3.1 | 2024年5月7日 |
---|---|
0.3.0 | 2024年2月25日 |
0.2.0 | 2024年2月19日 |
0.1.0 | 2024年2月15日 |
#10 in #mpsc
每月 88 次下载
61KB
1K SLoC
情况报告
前端无关的进度报告。
用法
use std::{sync::{mpsc, Arc}, thread, time::Duration};
use sitrep::{
Event, MessageEvent, Progress, DetachmentEvent, Reporter, StdMpscObserver, Task, UpdateEvent,
};
fn main() {
let (sender, receiver) = mpsc::channel();
let observer = Arc::new(StdMpscObserver::from(sender));
let (progress, reporter) = Progress::new(Task::default(), observer);
// The sending end of the progress report:
let worker_handle = thread::spawn(move || {
progress.set_label("Crunching numbers ...".to_owned());
let total = 100;
progress.set_total(total);
for completed in 1..=total {
thread::sleep(Duration::from_millis(100));
progress.set_completed(completed);
}
});
// The receiving end of the progress report:
let reporter_handle = thread::spawn(move || {
while let Ok(event) = receiver.recv() {
let Event::Update(UpdateEvent { id }) = event else {
continue;
};
// The reporter is only available as long as
// the corresponding progress is alive, too:
let Some(reporter) = reporter.upgrade() else {
break;
};
println!("{:#?}", reporter.report());
}
});
worker_handle.join().unwrap();
reporter_handle.join().unwrap();
}
更多示例,请参阅 示例目录。
文档
请参阅 docs.rs 上的文档。
贡献
请阅读 CONTRIBUTING.md 了解我们的 行为准则,
以及向我们提交拉取请求的流程。
版本控制
我们使用 SemVer 进行版本控制。有关可用的版本,请参阅 此存储库的标签。
许可证
本项目采用 MPL-2.0 许可 — 有关详细信息,请参阅 LICENSE.md 文件。
依赖项
~0.4–6.5MB
~26K SLoC