Struct diagnostic::Style
source · #[repr(packed(1))]pub struct Style { /* private fields */ }Expand description
Represents a set of styling options.
See the crate level documentation for usage information.
§Method Glossary
The Style structure exposes many methods for convenience. The majority of
these methods are shared with Paint.
§Foreground Color Constructors
Return a new Style structure with a foreground color applied.
§Setters
Set a style property on a given Style structure.
style.fg(color: Color)style.bg(color: Color)style.mask()style.wrap()style.bold()style.dimmed()style.italic()style.underline()style.blink()style.invert()style.hidden()style.strikethrough()
These methods can be chained:
use diagnostic::{
Color::{Magenta, Red},
Style,
};
Style::new(Red).bg(Magenta).underline().invert().italic().dimmed().bold();§Converters
Convert a Style into another structure.
§Getters
Return information about a Style structure.
style.fg_color()style.bg_color()style.is_masked()style.is_wrapping()style.is_bold()style.is_dimmed()style.is_italic()style.is_underline()style.is_blink()style.is_invert()style.is_hidden()style.is_strikethrough()
§Raw Formatters
Write the raw ANSI codes for a given Style to any fmt::Write.
Implementations§
source§impl Style
impl Style
sourcepub fn new(color: Color) -> Style
pub fn new(color: Color) -> Style
Default style with the foreground set to color and no other set
properties.
use diagnostic::Style;
let plain = Style::default();
assert_eq!(plain, Style::default());sourcepub fn fg(self, color: Color) -> Style
pub fn fg(self, color: Color) -> Style
Sets the foreground to color.
use diagnostic::{Color, Style};
let red_fg = Style::default().fg(Color::Red);sourcepub fn bg(self, color: Color) -> Style
pub fn bg(self, color: Color) -> Style
Sets the background to color.
use diagnostic::{Color, Style};
let red_bg = Style::default().bg(Color::Red);sourcepub fn mask(self) -> Style
pub fn mask(self) -> Style
Sets self to be masked.
An item with masked styling is not written out when painting is
disabled during Display or Debug invocations. When painting is
enabled, masking has no effect.
use diagnostic::Style;
let masked = Style::default().mask();
// "Whoops! " will only print when coloring is enabled.
println!("{}Something happened.", masked.paint("Whoops! "));sourcepub fn wrap(self) -> Style
pub fn wrap(self) -> Style
Sets self to be wrapping.
A wrapping Style converts all color resets written out by the internal
value to the styling of itself. This allows for seamless color wrapping
of other colored text.
§Performance
In order to wrap an internal value, the internal value must first be written out to a local buffer and examined. As a result, displaying a wrapped value is likely to result in a heap allocation and copy.
use diagnostic::{Color, Paint, Style};
let inner = format!("{} and {}", Paint::red("Stop"), Paint::green("Go"));
let wrapping = Style::new(Color::Blue).wrap();
// 'Hey!' will be unstyled, "Stop" will be red, "and" will be blue, and
// "Go" will be green. Without a wrapping `Paint`, "and" would be
// unstyled.
println!("Hey! {}", wrapping.paint(inner));sourcepub fn bold(self) -> Style
pub fn bold(self) -> Style
Enables the bold style on self.
use diagnostic::Paint;
println!("Using bold: {}", Paint::new("hi").bold());sourcepub fn dimmed(self) -> Style
pub fn dimmed(self) -> Style
Enables the dimmed style on self.
use diagnostic::Paint;
println!("Using dimmed: {}", Paint::new("hi").dimmed());sourcepub fn italic(self) -> Style
pub fn italic(self) -> Style
Enables the italic style on self.
use diagnostic::Paint;
println!("Using italic: {}", Paint::new("hi").italic());sourcepub fn underline(self) -> Style
pub fn underline(self) -> Style
Enables the underline style on self.
use diagnostic::Paint;
println!("Using underline: {}", Paint::new("hi").underline());sourcepub fn blink(self) -> Style
pub fn blink(self) -> Style
Enables the blink style on self.
use diagnostic::Paint;
println!("Using blink: {}", Paint::new("hi").blink());sourcepub fn invert(self) -> Style
pub fn invert(self) -> Style
Enables the invert style on self.
use diagnostic::Paint;
println!("Using invert: {}", Paint::new("hi").invert());Enables the hidden style on self.
use diagnostic::Paint;
println!("Using hidden: {}", Paint::new("hi").hidden());sourcepub fn strikethrough(self) -> Style
pub fn strikethrough(self) -> Style
Enables the strikethrough style on self.
use diagnostic::Paint;
println!("Using strikethrough: {}", Paint::new("hi").strikethrough());sourcepub fn paint<T>(self, item: T) -> Paint<T>
pub fn paint<T>(self, item: T) -> Paint<T>
Constructs a new Paint structure that encapsulates item with the
style set to self.
use diagnostic::{Color, Style};
let alert = Style::new(Color::Red).bold().underline();
println!("Alert: {}", alert.paint("This thing happened!"));sourcepub fn fg_color(&self) -> Color
pub fn fg_color(&self) -> Color
Returns the foreground color of self.
use diagnostic::{Color, Style};
let plain = Style::default();
assert_eq!(plain.fg_color(), Color::Unset);
let red = plain.fg(Color::Red);
assert_eq!(red.fg_color(), Color::Red);sourcepub fn bg_color(&self) -> Color
pub fn bg_color(&self) -> Color
Returns the foreground color of self.
use diagnostic::{Color, Style};
let plain = Style::default();
assert_eq!(plain.bg_color(), Color::Unset);
let white = plain.bg(Color::White);
assert_eq!(white.bg_color(), Color::White);sourcepub fn is_masked(&self) -> bool
pub fn is_masked(&self) -> bool
Returns true if self is masked.
use diagnostic::Style;
let plain = Style::default();
assert!(!plain.is_masked());
let masked = plain.mask();
assert!(masked.is_masked());sourcepub fn is_wrapping(&self) -> bool
pub fn is_wrapping(&self) -> bool
Returns true if self is wrapping.
use diagnostic::Style;
let plain = Style::default();
assert!(!plain.is_wrapping());
let wrapping = plain.wrap();
assert!(wrapping.is_wrapping());sourcepub fn is_bold(&self) -> bool
pub fn is_bold(&self) -> bool
Returns true if the bold property is set on self.
use diagnostic::Style;
let plain = Style::default();
assert!(!plain.is_bold());
let styled = plain.bold();
assert!(styled.is_bold());sourcepub fn is_dimmed(&self) -> bool
pub fn is_dimmed(&self) -> bool
Returns true if the dimmed property is set on self.
use diagnostic::Style;
let plain = Style::default();
assert!(!plain.is_dimmed());
let styled = plain.dimmed();
assert!(styled.is_dimmed());sourcepub fn is_italic(&self) -> bool
pub fn is_italic(&self) -> bool
Returns true if the italic property is set on self.
use diagnostic::Style;
let plain = Style::default();
assert!(!plain.is_italic());
let styled = plain.italic();
assert!(styled.is_italic());sourcepub fn is_underline(&self) -> bool
pub fn is_underline(&self) -> bool
Returns true if the underline property is set on self.
use diagnostic::Style;
let plain = Style::default();
assert!(!plain.is_underline());
let styled = plain.underline();
assert!(styled.is_underline());sourcepub fn is_blink(&self) -> bool
pub fn is_blink(&self) -> bool
Returns true if the blink property is set on self.
use diagnostic::Style;
let plain = Style::default();
assert!(!plain.is_blink());
let styled = plain.blink();
assert!(styled.is_blink());sourcepub fn is_invert(&self) -> bool
pub fn is_invert(&self) -> bool
Returns true if the invert property is set on self.
use diagnostic::Style;
let plain = Style::default();
assert!(!plain.is_invert());
let styled = plain.invert();
assert!(styled.is_invert());Returns true if the hidden property is set on self.
use diagnostic::Style;
let plain = Style::default();
assert!(!plain.is_hidden());
let styled = plain.hidden();
assert!(styled.is_hidden());sourcepub fn is_strikethrough(&self) -> bool
pub fn is_strikethrough(&self) -> bool
Returns true if the strikethrough property is set on self.
use diagnostic::Style;
let plain = Style::default();
assert!(!plain.is_strikethrough());
let styled = plain.strikethrough();
assert!(styled.is_strikethrough());sourcepub fn fmt_prefix(&self, f: &mut impl Write) -> Result
pub fn fmt_prefix(&self, f: &mut impl Write) -> Result
Writes the ANSI code prefix for the currently set styles.
This method is intended to be used inside of fmt::Display and
fmt::Debug implementations for custom or specialized use-cases. Most
users should use Paint for all painting needs.
This method writes the ANSI code prefix irrespective of whether painting
is currently enabled or disabled. To write the prefix only if painting
is enabled, condition a call to this method on Paint::is_enabled().
§Example
use diagnostic::Style;
use std::fmt;
struct CustomItem {
item: u32,
style: Style,
}
impl fmt::Display for CustomItem {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
self.style.fmt_prefix(f)?;
write!(f, "number: {}", self.item)?;
self.style.fmt_suffix(f)
}
}sourcepub fn fmt_suffix(&self, f: &mut impl Write) -> Result
pub fn fmt_suffix(&self, f: &mut impl Write) -> Result
Writes the ANSI code suffix for the currently set styles.
This method is intended to be used inside of fmt::Display and
fmt::Debug implementations for custom or specialized use-cases. Most
users should use Paint for all painting needs.
This method writes the ANSI code suffix irrespective of whether painting
is currently enabled or disabled. To write the suffix only if painting
is enabled, condition a call to this method on Paint::is_enabled().
§Example
use diagnostic::Style;
use std::fmt;
struct CustomItem {
item: u32,
style: Style,
}
impl fmt::Display for CustomItem {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
self.style.fmt_prefix(f)?;
write!(f, "number: {}", self.item)?;
self.style.fmt_suffix(f)
}
}Trait Implementations§
source§impl Ord for Style
impl Ord for Style
source§impl PartialEq for Style
impl PartialEq for Style
source§impl PartialOrd for Style
impl PartialOrd for Style
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self and other) and is used by the <=
operator. Read more