pub trait WriteColor: Write {
    // Required methods
    fn supports_color(&self) -> bool;
    fn set_color(&mut self, spec: &ColorSpec) -> Result<(), Error>;
    fn reset(&mut self) -> Result<(), Error>;

    // Provided methods
    fn is_synchronous(&self) -> bool { ... }
    fn set_hyperlink(&mut self, _link: &HyperlinkSpec<'_>) -> Result<(), Error> { ... }
    fn supports_hyperlinks(&self) -> bool { ... }
}
Expand description

This trait describes the behavior of writers that support colored output.

Required Methods§

source

fn supports_color(&self) -> bool

Returns true if and only if the underlying writer supports colors.

source

fn set_color(&mut self, spec: &ColorSpec) -> Result<(), Error>

Set the color settings of the writer.

Subsequent writes to this writer will use these settings until either reset is called or new color settings are set.

If there was a problem setting the color settings, then an error is returned.

source

fn reset(&mut self) -> Result<(), Error>

Reset the current color settings to their original settings.

If there was a problem resetting the color settings, then an error is returned.

Note that this does not reset hyperlinks. Those need to be reset on their own, e.g., by calling set_hyperlink with [HyperlinkSpec::none].

Provided Methods§

source

fn is_synchronous(&self) -> bool

Returns true if and only if the underlying writer must synchronously interact with an end user’s device in order to control colors. By default, this always returns false.

In practice, this should return true if the underlying writer is manipulating colors using the Windows console APIs.

This is useful for writing generic code (such as a buffered writer) that can perform certain optimizations when the underlying writer doesn’t rely on synchronous APIs. For example, ANSI escape sequences can be passed through to the end user’s device as is.

Set the current hyperlink of the writer.

The typical way to use this is to first call it with a HyperlinkSpec::open to write the actual URI to a tty that supports [OSC-8]. At this point, the caller can now write the label for the hyperlink. This may include coloring or other styles. Once the caller has finished writing the label, one should call this method again with HyperlinkSpec::close.

If there was a problem setting the hyperlink, then an error is returned.

This defaults to doing nothing.

Returns true if and only if the underlying writer supports hyperlinks.

This can be used to avoid generating hyperlink URIs unnecessarily.

This defaults to false.

Implementations on Foreign Types§

source§

impl WriteColor for Sink

source§

impl<'a, T> WriteColor for &'a mut T
where T: WriteColor + ?Sized,

source§

fn supports_color(&self) -> bool

source§

fn set_color(&mut self, spec: &ColorSpec) -> Result<(), Error>

source§

fn reset(&mut self) -> Result<(), Error>

source§

fn is_synchronous(&self) -> bool

source§

impl<T> WriteColor for Box<T>
where T: WriteColor + ?Sized,

source§

fn supports_color(&self) -> bool

source§

fn set_color(&mut self, spec: &ColorSpec) -> Result<(), Error>

source§

fn reset(&mut self) -> Result<(), Error>

source§

fn is_synchronous(&self) -> bool

Implementors§