pub trait Write {
    fn write_str(&mut self, s: &str, style: Style) -> Result;

    fn write_char(&mut self, c: char, style: Style) -> Result { ... }
    fn write_fmt(&mut self, args: Arguments<'_>) -> Result { ... }
}
Expand description

A trait for writing or formatting into attributed Unicode-accepting buffers or streams.

This trait only accepts UTF-8–encoded data and is not flushable. If you only want to accept Unicode and you don’t need flushing, you should implement this trait; otherwise you should implement stylish::io::Write.

Required Methods

Writes a string slice with a particular Style into this writer, returning whether the write succeeded.

This method can only succeed if the entire string slice was successfully written, and this method will not return until all data has been written or an error occurs.

use stylish::{Color, Foreground, Style, Write};

let blue = Style::default().with(Foreground(Color::Blue));

let mut s = String::new();
{
    let mut output = stylish::html(&mut s);
    output.write_str("water is ", Style::default())?;
    output.write_str("blue", blue)?;
    output.finish()?;
}

assert_eq!(s, "water is <span style=color:blue>blue</span>");

Provided Methods

Writes a char with a particular Style into this writer, returning whether the write succeeded.

A single char may be encoded as more than one byte. This method can only succeed if the entire byte sequence was successfully written, and this method will not return until all data has been written or an error occurs.

use stylish::{Color, Foreground, Style, Write};

let yellow = Style::default().with(Foreground(Color::Yellow));
let red = Style::default().with(Foreground(Color::Red));

let mut s = String::new();
{
    let mut output = stylish::html(&mut s);
    output.write_char('⚠', yellow)?;
    output.write_char(' ', Style::default())?;
    output.write_char('⛔', red)?;
    output.finish()?;
}

assert_eq!(
    s,
    "<span style=color:yellow>⚠</span> <span style=color:red>⛔</span>"
);

Glue for usage of the stylish::write! macro with implementors of this trait.

This method should generally not be invoked manually, but rather through the stylish::write! macro itself.

let mut s = String::new();
{
    let mut output = stylish::html(&mut s);
    output.write_fmt(stylish::format_args!("{:(fg=red)}", '☎'))?;
    output.finish()?;
}

assert_eq!(s, "<span style=color:red>☎</span>");

Implementations on Foreign Types

Implementors