12个版本 (4个重大更改)
使用旧Rust 2015
0.5.2 | 2017年10月19日 |
---|---|
0.5.0 | 2017年9月24日 |
0.4.2 | 2017年7月25日 |
#8 in #styled
185KB
4.5K SLoC
stijl
跨平台简单样式化文本流。
用法
将此添加到您的 Cargo.toml
[dependencies]
stijl = "0.5.2"
并将此添加到您的crate根目录
extern crate stijl;
示例
lib.rs
:
简单样式化文本流。
基本用法
stdout()
和 stderr()
是 std::io::stdout()
和 std::io::stderr()
的直接替换,它们通过一个支持八种前景颜色和强调文本的 CLIStream
进行封装。
示例
use std::io::Write;
use stijl::{CLIStream, DoStyle, Red};
let stream = &mut stijl::stdout(DoStyle::Auto);
stream.fg(Red);
stream.em();
write!(stream, "Warning: ");
stream.reset();
writeln!(stream, " this text is red.");
动画
get_size
和 rewind_lines
方法可以帮助制作进度条、旋转器和其他简单动画。
示例
use stijl::{CLIStream, DoStyle};
use std::{time, thread};
let delay = time::Duration::from_millis(100);
let stream = &mut stijl::stdout(DoStyle::Auto);
let max = stream.get_size().cols as usize;
let mut pos = 0;
for _ in 0..1000 {
// draw_indicator is left as an exercise for the reader
draw_indicator(stream, pos, max);
thread::sleep(delay);
if max != 0 {
pos = (pos + 1) % max;
}
stream.rewind_lines(1);
}
多线程
stdout()
和 stderr()
返回的对象实现了 LockableStream
,具有一个 lock
方法用于同步流。
为了减少竞争,多个线程可以写入它们自己的 BufStream
对象,完成后,将它们打印到 LockableStream
。
示例
use stijl::{BufStream, DoStyle};
let mut buf = BufStream::new();
// ...
// Do work
// Write to buf
// ...
let stream = &mut stijl::stdout(DoStyle::Auto);
let stream = &mut stream.lock();
buf.playback(stream)?;
平台说明
stdout
和 stderr
为理解 terminfo 样式转义序列的终端返回一个 TermStream
对象,包括 Cygwin 和 MSYS 终端,以及 Windows 10 控制台(周年更新或更高版本)。对于 Windows 早期版本的控制台,它们返回一个 ConStream
结构。
在 Windows 上,相同的二进制文件将在控制台或 Cygwin 终端产生等效的样式输出。然而,在 Cygwin 中,CLIStream::get_size()
目前总是返回默认大小(80x24)。