console

by mitsuhiko

mitsuhiko / console

A rust console and terminal abstraction

233 Stars 37 Forks Last release: Not found MIT License 155 Commits 28 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

console

console is a library for Rust that provides access to various terminal features so you can build nicer looking command line interfaces. It comes with various tools and utilities for working with Terminals and formatting text.

Best paired with other libraries in the family:

Terminal Access

The terminal is abstracted through the

console::Term
type. It can either directly provide access to the connected terminal or by buffering up commands. A buffered terminal will however not be completely buffered on windows where cursor movements are currently directly passed through.

Example usage:

use std::thread;
use std::time::Duration;

use console::Term;

let term = Term::stdout(); term.write_line("Hello World!")?; thread::sleep(Duration::from_millis(2000)); term.clear_line()?;

Colors and Styles

console
uses
clicolors-control
to control colors. It also provides higher level wrappers for styling text and other things that can be displayed with the
style
function and utility types.

Example usage:

use console::style;

println!("This is {} neat", style("quite").cyan());

You can also store styles and apply them to text later:

use console::Style;

let cyan = Style::new().cyan(); println!("This is {} neat", cyan.apply_to("quite"));

Working with ANSI Codes

The crate provids the function

strip_ansi_codes
to remove ANSI codes from a string as well as
measure_text_width
to calculate the width of a string as it would be displayed by the terminal. Both of those together are useful for more complex formatting.

Unicode Width Support

By default this crate depends on the

unicode-width
crate to calculate the width of terminal characters. If you do not need this you can disable the
unicode-width
feature which will cut down on dependencies.

License: MIT

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.