14 releases (7 major breaking)

8.0.0 Dec 24, 2021
7.0.1 Dec 23, 2021
6.0.0 Nov 16, 2021
5.0.0 Oct 20, 2021
0.1.0 Oct 17, 2021

#888 in Command-line interface

MIT license

16KB
387 lines

scolor

Simple Ansi Colors (strives for ~=0 cost)

use scolor::ColorExt;
println!("{}", "hello".red().bold().underline());
println!("{}", "world".green().red_bg().italic());

use scolor::{Color, CustomStyle, ColorDesc, Effect};
const LIGHT_BLUE_ITALIC_BOLD: CustomStyle<2, 2> =
([ColorDesc::light_blue(), ColorDesc::red_bg()], [Effect::Italic, Effect::Bold]);

println!("{}", "world".custom(LIGHT_BLUE_ITALIC_BOLD));

Const equivalent of trait functions are provided as freestanding top-level functions

const BLUE_WORLD: scolor::ColorFmt<'_,str,1,0> = scolor::blue("world");

For even more zero cost power you can enable zero-cost feature

It makes the generated ASCII code as optimal as it can be

But the cost is that it's less ergonomic, the API is invoked like this:

use scolor::ColorExt;
println!("{}", "hello".green().bold::<1>().red_bg::<2>().italic::<2>());

use scolor::{ColorDesc, ColorFmt, Effect, green};
const _:() = {
    let fmt = green("hello").italic::<1>().bold::<2>().red_bg::<2>().crossed_out::<3>();
    assert!(matches!(ColorFmt{fmt:"hello",color:[ColorDesc::green(),ColorDesc::red_bg()],effect:[Effect::Italic, Effect::Bold]}, fmt));
};

License: MIT

No runtime deps

Features