pub struct Style(u8);
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));
Tuple Fields§
§0: u8
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);
pub(crate) fn to_str(self) -> String
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 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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)