pub struct Style(/* private fields */);Expand description
A combinatorial style such as bold, italics, dimmed, etc.
§Creation
Style::default() returns a Style with no style switches
activated and is the default method of creating a plain Style.
§Style from a set of Styless / Styles iterator
Style implements FromIter<Styles> which means that it is
possible to do the following:
let style = Style::from_iter([Styles::Bold, Styles::Italic, Styles::Strikethrough]);
for styles in [Styles::Bold, Styles::Italic, Styles::Strikethrough] {
assert!(style.contains(styles));
}As you can see, this is a good thing to keep in mind, although for
most cases, where you’re not setting styles dynamically and are
simply creating a pre-defined set of styles, using Default and
then using the builder-style methods is likely prettier.
let many_styles = Style::default()
.bold()
.underline()
.italic()
.blink();§Implementation of logical bitwise operators
Style implements bitwise logical operations that operate on
the held style switches collectively. By far the most common
and useful is the bitwise ‘or’ operator | which combines two
styles, merging their combined styles into one. Example:
let only_bold = Style::from(Styles::Bold);
// This line is actually an example of `Styles`'s bitwise logic impls but still.
let underline_and_italic = Styles::Underline | Styles::Italic;
let all_three = only_bold | underline_and_italic;
assert!(all_three.contains(Styles::Bold)
&& all_three.contains(Styles::Underline)
&& all_three.contains(Styles::Italic));This functionality also allows for easily turning off styles
of one Styles using another by combining the & and !
operators.
let mut very_loud_style = Style::default()
.bold()
.underline()
.italic()
.strikethrough()
.hidden();
// Oops! Some of those should not be in there!
// This Style now has all styles _except_ the two we don't want
// (hidden and strikethough).
let remove_mask =
!Style::from_iter([Styles::Hidden, Styles::Strikethrough]);
very_loud_style &= remove_mask;
// `very_loud_style` no longer contains the undesired style
// switches...
assert!(!very_loud_style.contains(Styles::Hidden)
&& !very_loud_style.contains(Styles::Strikethrough));
// ...but it retains everything else!
assert!(very_loud_style.contains(Styles::Bold));Implementations§
Source§impl Style
impl Style
Sourcepub fn contains(self, style: Styles) -> bool
pub fn contains(self, style: Styles) -> bool
Check if the current style has one of Styles switched on.
let colored = "".bold().italic();
assert_eq!(colored.style.contains(Styles::Bold), true);
assert_eq!(colored.style.contains(Styles::Italic), true);
assert_eq!(colored.style.contains(Styles::Dimmed), false);Sourcepub fn add(&mut self, two: Styles)
pub fn add(&mut self, two: Styles)
Adds the two style switch to this Style.
let cstr = "".red().bold();
let mut style = cstr.style;
style.add(Styles::Italic);
let mut cstr2 = "".blue();
cstr2.style = style;
assert!(cstr2.style.contains(Styles::Bold));
assert!(cstr2.style.contains(Styles::Italic));
assert_eq!(cstr2.fgcolor, Some(Color::Blue));Sourcepub fn remove(&mut self, two: Styles)
pub fn remove(&mut self, two: Styles)
Turns off a style switch.
use colored::*;
let cstr = "".red().bold().italic();
let mut style = cstr.style;
style.remove(Styles::Italic);
let mut cstr2 = "".blue();
cstr2.style = style;
assert!(cstr2.style.contains(Styles::Bold));
assert!(!cstr2.style.contains(Styles::Italic));
assert_eq!(cstr2.fgcolor, Some(Color::Blue));Makes this Style include Hidden.
Sourcepub fn strikethrough(self) -> Style
pub fn strikethrough(self) -> Style
Makes this Style include Strikethrough.
Trait Implementations§
Source§impl BitAndAssign<&Style> for Style
impl BitAndAssign<&Style> for Style
Source§fn bitand_assign(&mut self, other: &Style)
fn bitand_assign(&mut self, other: &Style)
&= operation. Read moreSource§impl BitAndAssign<&Styles> for Style
impl BitAndAssign<&Styles> for Style
Source§fn bitand_assign(&mut self, other: &Styles)
fn bitand_assign(&mut self, other: &Styles)
&= operation. Read moreSource§impl BitAndAssign<Styles> for Style
impl BitAndAssign<Styles> for Style
Source§fn bitand_assign(&mut self, other: Styles)
fn bitand_assign(&mut self, other: Styles)
&= operation. Read moreSource§impl BitAndAssign for Style
impl BitAndAssign for Style
Source§fn bitand_assign(&mut self, other: Style)
fn bitand_assign(&mut self, other: Style)
&= operation. Read moreSource§impl BitOrAssign<&Style> for Style
impl BitOrAssign<&Style> for Style
Source§fn bitor_assign(&mut self, other: &Style)
fn bitor_assign(&mut self, other: &Style)
|= operation. Read moreSource§impl BitOrAssign<&Styles> for Style
impl BitOrAssign<&Styles> for Style
Source§fn bitor_assign(&mut self, other: &Styles)
fn bitor_assign(&mut self, other: &Styles)
|= operation. Read moreSource§impl BitOrAssign<Styles> for Style
impl BitOrAssign<Styles> for Style
Source§fn bitor_assign(&mut self, other: Styles)
fn bitor_assign(&mut self, other: Styles)
|= operation. Read moreSource§impl BitOrAssign for Style
impl BitOrAssign for Style
Source§fn bitor_assign(&mut self, other: Style)
fn bitor_assign(&mut self, other: Style)
|= operation. Read moreSource§impl BitXorAssign<&Style> for Style
impl BitXorAssign<&Style> for Style
Source§fn bitxor_assign(&mut self, other: &Style)
fn bitxor_assign(&mut self, other: &Style)
^= operation. Read moreSource§impl BitXorAssign<&Styles> for Style
impl BitXorAssign<&Styles> for Style
Source§fn bitxor_assign(&mut self, other: &Styles)
fn bitxor_assign(&mut self, other: &Styles)
^= operation. Read moreSource§impl BitXorAssign<Styles> for Style
impl BitXorAssign<Styles> for Style
Source§fn bitxor_assign(&mut self, other: Styles)
fn bitxor_assign(&mut self, other: Styles)
^= operation. Read moreSource§impl BitXorAssign for Style
impl BitXorAssign for Style
Source§fn bitxor_assign(&mut self, other: Style)
fn bitxor_assign(&mut self, other: Style)
^= operation. Read moreSource§impl FromIterator<Styles> for Style
impl FromIterator<Styles> for Style
impl Copy for Style
impl Eq for Style
impl StructuralPartialEq for Style
Auto Trait Implementations§
impl Freeze for Style
impl RefUnwindSafe for Style
impl Send for Style
impl Sync for Style
impl Unpin for Style
impl UnwindSafe for Style
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);