Crate anstream

source ·
Expand description

Auto-adapting stdout / stderr streams

A portmanteau of “ansi stream”

AutoStream always accepts ANSI escape codes, adapting to the user’s terminal’s capabilities.

Benefits

  • Allows the caller to not be concerned with the terminal’s capabilities
  • Semver safe way of passing styled text between crates as ANSI escape codes offer more compatibility than most crate APIs.

Available styling crates:

  • anstyle for minimal runtime styling, designed to go in public APIs (once it hits 1.0)
  • owo-colors for feature-rich runtime styling
  • color-print for feature-rich compile-time styling

Example

use anstream::println;
use owo_colors::OwoColorize as _;

// Foreground colors
println!("My number is {:#x}!", 10.green());
// Background colors
println!("My number is not {}!", 4.on_red());

And this will correctly handle piping to a file, etc

Modules

Gracefully degrade styled output

Macros

Prints to stderr.
Prints to stderr, with a newline.
Panics the current thread.
Prints to stdout.
Prints to stdout, with a newline.

Structs

std::io::Write that adapts ANSI escape codes to the underlying Writes capabilities
In-memory RawStream
Only pass printable data to the inner Write

Enums

Selection for overriding color output Selection for overriding color output

Traits

Explicitly lock a std::io::Writeable
Required functionality for underlying std::io::Write for adaptation

Functions

Create an ANSI escape code compatible stderr
Create an ANSI escape code compatible stdout