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 Styles
s / 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) -> Self
pub fn strikethrough(self) -> Self
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 more