6 个版本

0.3.0 2022 年 5 月 18 日
0.2.2 2022 年 2 月 21 日
0.2.1 2021 年 6 月 12 日
0.2.0 2021 年 5 月 28 日
0.1.1 2020 年 12 月 20 日

437命令行界面

Download history 83/week @ 2024-03-11 112/week @ 2024-03-18 92/week @ 2024-03-25 121/week @ 2024-04-01 58/week @ 2024-04-08 84/week @ 2024-04-15 76/week @ 2024-04-22 95/week @ 2024-04-29 70/week @ 2024-05-06 62/week @ 2024-05-13 71/week @ 2024-05-20 62/week @ 2024-05-27 80/week @ 2024-06-03 69/week @ 2024-06-10 85/week @ 2024-06-17 77/week @ 2024-06-24

每月 320 次下载
用于 10 Crates(7 个直接使用)

MIT 许可证

19KB
182

linya

Workflow Status

简单并发进度条。

特性

  • 直观的 API。
  • 一流支持 rayon 等。
  • 高效,无需分配的重绘。
  • 动态添加新的子进度条。
  • 单线程多进度条。
  • 轻量级,仅有一个依赖项。

用法

linya 是针对多进度条场景设计的,与其他进度条库不同,没有单独的进度条类型。相反,我们使用 Progress 类型,一个“进度条协调器”。

多进度条

要在线程间可变地访问 Progress,必须将其包装在常规的 并发共享类型 中。对于 rayon 而言,只需要 Mutex

use std::sync::Mutex;
use linya::{Bar, Progress};
use rayon::prelude::*;

let progress = Mutex::new(Progress::new());

// `into_par_iter()` is from `rayon`, and lets us parallelize some
// operation over a collection "for free".
(0..10).into_par_iter().for_each(|n| {
  let bar: Bar = progress.lock().unwrap().bar(50, format!("Downloading {}", n));

  // ... Your logic ...

  // Increment the bar and draw it immediately.
  // This is likely called in some inner loop or other closure.
  progress.lock().unwrap().inc_and_draw(&bar, 10);
});

请注意,新进度条是在派生线程中动态添加的。我们调用 Progress::bar 来获取一个新的“进度条句柄”,然后在增加/绘制时将该句柄传递回父 Progress

请参阅 Progress::inc_and_drawProgress::set_and_draw 来推进并渲染进度条。

单进度条

Progress 也可以在单线程上下文中用于单个进度条。用法相同,只是不需要锁定。

use linya::{Bar, Progress};

let mut progress = Progress::new();
let bar: Bar = progress.bar(50, "Downloading");

// Use in a loop, etc.
progress.set_and_draw(&bar, 10);

这样,您甚至可以在单线程上下文中使用多进度条。

注意事项

以下某些点可能在未来的版本中得到修复。

  • 您的终端必须支持 ANSI 代码。
  • 没有专门的渲染线程,以保持使用简单。
  • 没有进度条模板,以避免依赖。
  • 没有其他进度条样式(尚未)。
  • 没有“速率”,因为重绘不是基于时间的。
  • 完成后没有清除进度条。
  • 没有旋转指示器,也因为没有时间感。
  • 如果窗口大小发生变化,进度条不会动态调整大小。

如果您需要更多可定制的进度条并且愿意接受更重的依赖项,请考虑 indicatif

请注意,同时使用多个 Progress 会导致未指定行为。

趣闻轶事

林亚 是昆雅语中“池塘”的意思,例如一个美丽的山间池塘

依赖项

~220KB