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

MIT/Apache

185KB
4.5K SLoC

stijl

跨平台简单样式化文本流。

Build Status

文档

用法

将此添加到您的 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_sizerewind_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)?;

平台说明

stdoutstderr 为理解 terminfo 样式转义序列的终端返回一个 TermStream 对象,包括 Cygwin 和 MSYS 终端,以及 Windows 10 控制台(周年更新或更高版本)。对于 Windows 早期版本的控制台,它们返回一个 ConStream 结构。

在 Windows 上,相同的二进制文件将在控制台或 Cygwin 终端产生等效的样式输出。然而,在 Cygwin 中,CLIStream::get_size() 目前总是返回默认大小(80x24)。

依赖项