pub struct Text<'a> {
pub alignment: Option<Alignment>,
pub style: Style,
pub lines: Vec<Line<'a>>,
}
Expand description
A string split over one or more lines.
Text
is used wherever text is displayed in the terminal and represents one or more Line
s
of text. When a Text
is rendered, each line is rendered as a single line of text from top to
bottom of the area. The text can be styled and aligned.
§Constructor Methods
Text::raw
creates aText
(potentially multiple lines) with no style.Text::styled
creates aText
(potentially multiple lines) with a style.Text::default
creates aText
with empty content and the default style.
§Conversion Methods
Text::from
creates aText
from aString
.Text::from
creates aText
from a&str
.Text::from
creates aText
from aCow<str>
.Text::from
creates aText
from aSpan
.Text::from
creates aText
from aLine
.Text::from
creates aText
from aVec<Line>
.Text::from_iter
creates aText
from an iterator of items that can be converted intoLine
.
§Setter Methods
These methods are fluent setters. They return a Text
with the property set.
Text::style
sets the style of thisText
.Text::alignment
sets the alignment for thisText
.Text::left_aligned
sets the alignment toAlignment::Left
.Text::centered
sets the alignment toAlignment::Center
.Text::right_aligned
sets the alignment toAlignment::Right
.
§Iteration Methods
Text::iter
returns an iterator over the lines of the text.Text::iter_mut
returns an iterator that allows modifying each line.Text::into_iter
returns an iterator over the lines of the text.
§Other Methods
Text::width
returns the max width of all the lines.Text::height
returns the height.Text::patch_style
patches the style of thisText
, adding modifiers from the given style.Text::reset_style
resets the style of theText
.Text::push_line
adds a line to the text.Text::push_span
adds a span to the last line of the text.
§Examples
§Creating Text
A Text
, like a Line
, can be constructed using one of the many From
implementations or
via the Text::raw
and Text::styled
methods. Helpfully, Text
also implements
core::iter::Extend
which enables the concatenation of several Text
blocks.
use std::{borrow::Cow, iter};
use ratatui::{
style::{Color, Modifier, Style, Stylize},
text::{Line, Span, Text},
};
let style = Style::new().yellow().italic();
let text = Text::raw("The first line\nThe second line").style(style);
let text = Text::styled("The first line\nThe second line", style);
let text = Text::styled(
"The first line\nThe second line",
(Color::Yellow, Modifier::ITALIC),
);
let text = Text::from("The first line\nThe second line");
let text = Text::from(String::from("The first line\nThe second line"));
let text = Text::from(Cow::Borrowed("The first line\nThe second line"));
let text = Text::from(Span::styled("The first line\nThe second line", style));
let text = Text::from(Line::from("The first line"));
let text = Text::from(vec![
Line::from("The first line"),
Line::from("The second line"),
]);
let text = Text::from_iter(iter::once("The first line").chain(iter::once("The second line")));
let mut text = Text::default();
text.extend(vec![
Line::from("The first line"),
Line::from("The second line"),
]);
text.extend(Text::from("The third line\nThe fourth line"));
§Styling Text
The text’s Style
is used by the rendering widget to determine how to style the text. Each
Line
in the text will be styled with the Style
of the text, and then with its own
Style
. Text
also implements Styled
which means you can use the methods of the
Stylize
trait.
use ratatui::{
style::{Color, Modifier, Style, Stylize},
text::{Line, Text},
};
let text = Text::from("The first line\nThe second line").style(Style::new().yellow().italic());
let text = Text::from("The first line\nThe second line")
.yellow()
.italic();
let text = Text::from(vec![
Line::from("The first line").yellow(),
Line::from("The second line").yellow(),
])
.italic();
§Aligning Text
The text’s Alignment
can be set using Text::alignment
or the related helper methods.
Lines composing the text can also be individually aligned with Line::alignment
.
use ratatui::{
layout::Alignment,
text::{Line, Text},
};
let text = Text::from("The first line\nThe second line").alignment(Alignment::Right);
let text = Text::from("The first line\nThe second line").right_aligned();
let text = Text::from(vec![
Line::from("The first line").left_aligned(),
Line::from("The second line").right_aligned(),
Line::from("The third line"),
])
.centered();
§Rendering Text
Text
implements the Widget
trait, which means it can be rendered to a Buffer
or to a
Frame
.
use ratatui::{text::Text, widgets::Widget, Frame};
// within another widget's `render` method:
let text = Text::from("The first line\nThe second line");
text.render(area, buf);
// within a terminal.draw closure:
let text = Text::from("The first line\nThe second line");
frame.render_widget(text, area);
§Rendering Text with a Paragraph Widget
Usually apps will use the Paragraph
widget instead of rendering a Text
directly as it
provides more functionality.
use ratatui::{
buffer::Buffer,
layout::Rect,
text::Text,
widgets::{Paragraph, Widget, Wrap},
};
let text = Text::from("The first line\nThe second line");
let paragraph = Paragraph::new(text)
.wrap(Wrap { trim: true })
.scroll((1, 1))
.render(area, buf);
Fields§
§alignment: Option<Alignment>
The alignment of this text.
style: Style
The style of this text.
lines: Vec<Line<'a>>
The lines that make up this piece of text.
Implementations§
source§impl<'a> Text<'a>
impl<'a> Text<'a>
sourcepub fn raw<T>(content: T) -> Self
pub fn raw<T>(content: T) -> Self
Create some text (potentially multiple lines) with no style.
§Examples
use ratatui::text::Text;
Text::raw("The first line\nThe second line");
Text::raw(String::from("The first line\nThe second line"));
sourcepub fn styled<T, S>(content: T, style: S) -> Self
pub fn styled<T, S>(content: T, style: S) -> Self
Create some text (potentially multiple lines) with a style.
style
accepts any type that is convertible to Style
(e.g. Style
, Color
, or
your own type that implements Into<Style>
).
§Examples
use ratatui::{
style::{Color, Modifier, Style},
text::Text,
};
let style = Style::default()
.fg(Color::Yellow)
.add_modifier(Modifier::ITALIC);
Text::styled("The first line\nThe second line", style);
Text::styled(String::from("The first line\nThe second line"), style);
Examples found in repository?
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
fn text(frame_count: usize, area: Rect, buf: &mut Buffer) {
let sub_frame = frame_count.saturating_sub(TEXT_DELAY);
if sub_frame == 0 {
return;
}
let logo = indoc::indoc! {"
██████ ████ ██████ ████ ██████ ██ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██████ ████████ ██ ████████ ██ ██ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ████ ██
"};
let logo_text = Text::styled(logo, Color::Rgb(255, 255, 255));
let area = centered_rect(area, logo_text.width() as u16, logo_text.height() as u16);
let mask_buf = &mut Buffer::empty(area);
logo_text.render(area, mask_buf);
let percentage = (sub_frame as f64 / 480.0).clamp(0.0, 1.0);
for row in area.rows() {
for col in row.columns() {
let cell = &mut buf[(col.x, col.y)];
let mask_cell = &mut mask_buf[(col.x, col.y)];
cell.set_symbol(mask_cell.symbol());
// blend the mask cell color with the cell color
let cell_color = cell.style().bg.unwrap_or(Color::Rgb(0, 0, 0));
let mask_color = mask_cell.style().fg.unwrap_or(Color::Rgb(255, 0, 0));
let color = blend(mask_color, cell_color, percentage);
cell.set_style(Style::new().fg(color));
}
}
}
sourcepub fn width(&self) -> usize
pub fn width(&self) -> usize
Returns the max width of all the lines.
§Examples
use ratatui::text::Text;
let text = Text::from("The first line\nThe second line");
assert_eq!(15, text.width());
Examples found in repository?
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
fn text(frame_count: usize, area: Rect, buf: &mut Buffer) {
let sub_frame = frame_count.saturating_sub(TEXT_DELAY);
if sub_frame == 0 {
return;
}
let logo = indoc::indoc! {"
██████ ████ ██████ ████ ██████ ██ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██████ ████████ ██ ████████ ██ ██ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ████ ██
"};
let logo_text = Text::styled(logo, Color::Rgb(255, 255, 255));
let area = centered_rect(area, logo_text.width() as u16, logo_text.height() as u16);
let mask_buf = &mut Buffer::empty(area);
logo_text.render(area, mask_buf);
let percentage = (sub_frame as f64 / 480.0).clamp(0.0, 1.0);
for row in area.rows() {
for col in row.columns() {
let cell = &mut buf[(col.x, col.y)];
let mask_cell = &mut mask_buf[(col.x, col.y)];
cell.set_symbol(mask_cell.symbol());
// blend the mask cell color with the cell color
let cell_color = cell.style().bg.unwrap_or(Color::Rgb(0, 0, 0));
let mask_color = mask_cell.style().fg.unwrap_or(Color::Rgb(255, 0, 0));
let color = blend(mask_color, cell_color, percentage);
cell.set_style(Style::new().fg(color));
}
}
}
sourcepub fn height(&self) -> usize
pub fn height(&self) -> usize
Returns the height.
§Examples
use ratatui::text::Text;
let text = Text::from("The first line\nThe second line");
assert_eq!(2, text.height());
Examples found in repository?
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
fn text(frame_count: usize, area: Rect, buf: &mut Buffer) {
let sub_frame = frame_count.saturating_sub(TEXT_DELAY);
if sub_frame == 0 {
return;
}
let logo = indoc::indoc! {"
██████ ████ ██████ ████ ██████ ██ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██████ ████████ ██ ████████ ██ ██ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ████ ██
"};
let logo_text = Text::styled(logo, Color::Rgb(255, 255, 255));
let area = centered_rect(area, logo_text.width() as u16, logo_text.height() as u16);
let mask_buf = &mut Buffer::empty(area);
logo_text.render(area, mask_buf);
let percentage = (sub_frame as f64 / 480.0).clamp(0.0, 1.0);
for row in area.rows() {
for col in row.columns() {
let cell = &mut buf[(col.x, col.y)];
let mask_cell = &mut mask_buf[(col.x, col.y)];
cell.set_symbol(mask_cell.symbol());
// blend the mask cell color with the cell color
let cell_color = cell.style().bg.unwrap_or(Color::Rgb(0, 0, 0));
let mask_color = mask_cell.style().fg.unwrap_or(Color::Rgb(255, 0, 0));
let color = blend(mask_color, cell_color, percentage);
cell.set_style(Style::new().fg(color));
}
}
}
sourcepub fn style<S: Into<Style>>(self, style: S) -> Self
pub fn style<S: Into<Style>>(self, style: S) -> Self
Sets the style of this text.
Defaults to Style::default()
.
Note: This field was added in v0.26.0. Prior to that, the style of a text was determined
only by the style of each Line
contained in the line. For this reason, this field may
not be supported by all widgets (outside of the ratatui
crate itself).
style
accepts any type that is convertible to Style
(e.g. Style
, Color
, or
your own type that implements Into<Style>
).
§Examples
use ratatui::{
style::{Style, Stylize},
text::Text,
};
let mut line = Text::from("foo").style(Style::new().red());
sourcepub fn patch_style<S: Into<Style>>(self, style: S) -> Self
pub fn patch_style<S: Into<Style>>(self, style: S) -> Self
Patches the style of this Text, adding modifiers from the given style.
This is useful for when you want to apply a style to a text that already has some styling.
In contrast to Text::style
, this method will not overwrite the existing style, but
instead will add the given style’s modifiers to this text’s style.
Text
also implements Styled
which means you can use the methods of the Stylize
trait.
style
accepts any type that is convertible to Style
(e.g. Style
, Color
, or
your own type that implements Into<Style>
).
This is a fluent setter method which must be chained or used as it consumes self
§Examples
use ratatui::{
style::{Color, Modifier},
text::Text,
};
let raw_text = Text::styled("The first line\nThe second line", Modifier::ITALIC);
let styled_text = Text::styled(
String::from("The first line\nThe second line"),
(Color::Yellow, Modifier::ITALIC),
);
assert_ne!(raw_text, styled_text);
let raw_text = raw_text.patch_style(Color::Yellow);
assert_eq!(raw_text, styled_text);
Examples found in repository?
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237
fn draw(&self, frame: &mut Frame) {
let vertical = Layout::vertical([
Constraint::Length(1),
Constraint::Length(3),
Constraint::Min(1),
]);
let [help_area, input_area, messages_area] = vertical.areas(frame.area());
let (msg, style) = match self.input_mode {
InputMode::Normal => (
vec![
"Press ".into(),
"q".bold(),
" to exit, ".into(),
"e".bold(),
" to start editing.".bold(),
],
Style::default().add_modifier(Modifier::RAPID_BLINK),
),
InputMode::Editing => (
vec![
"Press ".into(),
"Esc".bold(),
" to stop editing, ".into(),
"Enter".bold(),
" to record the message".into(),
],
Style::default(),
),
};
let text = Text::from(Line::from(msg)).patch_style(style);
let help_message = Paragraph::new(text);
frame.render_widget(help_message, help_area);
let input = Paragraph::new(self.input.as_str())
.style(match self.input_mode {
InputMode::Normal => Style::default(),
InputMode::Editing => Style::default().fg(Color::Yellow),
})
.block(Block::bordered().title("Input"));
frame.render_widget(input, input_area);
match self.input_mode {
// Hide the cursor. `Frame` does this by default, so we don't need to do anything here
InputMode::Normal => {}
// Make the cursor visible and ask ratatui to put it at the specified coordinates after
// rendering
#[allow(clippy::cast_possible_truncation)]
InputMode::Editing => frame.set_cursor_position(Position::new(
// Draw the cursor at the current position in the input field.
// This position is can be controlled via the left and right arrow key
input_area.x + self.character_index as u16 + 1,
// Move one line down, from the border to the input line
input_area.y + 1,
)),
}
let messages: Vec<ListItem> = self
.messages
.iter()
.enumerate()
.map(|(i, m)| {
let content = Line::from(Span::raw(format!("{i}: {m}")));
ListItem::new(content)
})
.collect();
let messages = List::new(messages).block(Block::bordered().title("Messages"));
frame.render_widget(messages, messages_area);
}
sourcepub fn reset_style(self) -> Self
pub fn reset_style(self) -> Self
Resets the style of the Text.
Equivalent to calling patch_style(Style::reset())
.
This is a fluent setter method which must be chained or used as it consumes self
§Examples
use ratatui::{
style::{Color, Modifier, Style},
text::Text,
};
let text = Text::styled(
"The first line\nThe second line",
(Color::Yellow, Modifier::ITALIC),
);
let text = text.reset_style();
assert_eq!(Style::reset(), text.style);
sourcepub fn alignment(self, alignment: Alignment) -> Self
pub fn alignment(self, alignment: Alignment) -> Self
Sets the alignment for this text.
Defaults to: None
, meaning the alignment is determined by the rendering widget.
Setting the alignment of a Text generally overrides the alignment of its
parent Widget.
Alignment can be set individually on each line to override this text’s alignment.
§Examples
Set alignment to the whole text.
use ratatui::{layout::Alignment, text::Text};
let mut text = Text::from("Hi, what's up?");
assert_eq!(None, text.alignment);
assert_eq!(
Some(Alignment::Right),
text.alignment(Alignment::Right).alignment
)
Set a default alignment and override it on a per line basis.
use ratatui::{
layout::Alignment,
text::{Line, Text},
};
let text = Text::from(vec![
Line::from("left").alignment(Alignment::Left),
Line::from("default"),
Line::from("default"),
Line::from("right").alignment(Alignment::Right),
])
.alignment(Alignment::Center);
Will render the following
left
default
default
right
sourcepub fn left_aligned(self) -> Self
pub fn left_aligned(self) -> Self
Left-aligns the whole text.
Convenience shortcut for Text::alignment(Alignment::Left)
.
Setting the alignment of a Text generally overrides the alignment of its
parent Widget, with the default alignment being inherited from the parent.
Alignment can be set individually on each line to override this text’s alignment.
§Examples
use ratatui::text::Text;
let text = Text::from("Hi, what's up?").left_aligned();
sourcepub fn centered(self) -> Self
pub fn centered(self) -> Self
Center-aligns the whole text.
Convenience shortcut for Text::alignment(Alignment::Center)
.
Setting the alignment of a Text generally overrides the alignment of its
parent Widget, with the default alignment being inherited from the parent.
Alignment can be set individually on each line to override this text’s alignment.
§Examples
use ratatui::text::Text;
let text = Text::from("Hi, what's up?").centered();
sourcepub fn right_aligned(self) -> Self
pub fn right_aligned(self) -> Self
Right-aligns the whole text.
Convenience shortcut for Text::alignment(Alignment::Right)
.
Setting the alignment of a Text generally overrides the alignment of its
parent Widget, with the default alignment being inherited from the parent.
Alignment can be set individually on each line to override this text’s alignment.
§Examples
use ratatui::text::Text;
let text = Text::from("Hi, what's up?").right_aligned();
sourcepub fn iter_mut(&mut self) -> IterMut<'_, Line<'a>>
pub fn iter_mut(&mut self) -> IterMut<'_, Line<'a>>
Returns an iterator that allows modifying each line.
sourcepub fn push_line<T: Into<Line<'a>>>(&mut self, line: T)
pub fn push_line<T: Into<Line<'a>>>(&mut self, line: T)
Adds a line to the text.
line
can be any type that can be converted into a Line
. For example, you can pass a
&str
, a String
, a Span
, or a Line
.
§Examples
use ratatui::text::{Line, Span, Text};
let mut text = Text::from("Hello, world!");
text.push_line(Line::from("How are you?"));
text.push_line(Span::from("How are you?"));
text.push_line("How are you?");
sourcepub fn push_span<T: Into<Span<'a>>>(&mut self, span: T)
pub fn push_span<T: Into<Span<'a>>>(&mut self, span: T)
Adds a span to the last line of the text.
span
can be any type that is convertible into a Span
. For example, you can pass a
&str
, a String
, or a Span
.
§Examples
use ratatui::text::{Span, Text};
let mut text = Text::from("Hello, world!");
text.push_span(Span::from("How are you?"));
text.push_span("How are you?");
Trait Implementations§
source§impl<'a> Add for Text<'a>
impl<'a> Add for Text<'a>
Adds two Text
together.
This ignores the style and alignment of the second Text
.
source§impl<'a> AddAssign<Line<'a>> for Text<'a>
impl<'a> AddAssign<Line<'a>> for Text<'a>
source§fn add_assign(&mut self, line: Line<'a>)
fn add_assign(&mut self, line: Line<'a>)
+=
operation. Read moresource§impl<'a, T> Extend<T> for Text<'a>
impl<'a, T> Extend<T> for Text<'a>
source§fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I)
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)source§impl<'a, T> FromIterator<T> for Text<'a>
impl<'a, T> FromIterator<T> for Text<'a>
source§fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
source§impl<'a> IntoIterator for &'a Text<'a>
impl<'a> IntoIterator for &'a Text<'a>
source§impl<'a> IntoIterator for &'a mut Text<'a>
impl<'a> IntoIterator for &'a mut Text<'a>
source§impl<'a> IntoIterator for Text<'a>
impl<'a> IntoIterator for Text<'a>
source§impl WidgetRef for Text<'_>
impl WidgetRef for Text<'_>
source§fn render_ref(&self, area: Rect, buf: &mut Buffer)
fn render_ref(&self, area: Rect, buf: &mut Buffer)
unstable-widget-ref
only.impl<'a> Eq for Text<'a>
impl<'a> StructuralPartialEq for Text<'a>
Auto Trait Implementations§
impl<'a> Freeze for Text<'a>
impl<'a> RefUnwindSafe for Text<'a>
impl<'a> Send for Text<'a>
impl<'a> Sync for Text<'a>
impl<'a> Unpin for Text<'a>
impl<'a> UnwindSafe for Text<'a>
Blanket Implementations§
source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters
when converting.source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self
into C
, using the provided parameters.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
)source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
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<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle
.source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other
into Self
, while performing the appropriate scaling,
rounding and clamping.source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
source§fn into_angle(self) -> U
fn into_angle(self) -> U
T
.source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters
when converting.source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self
into C
, using the provided parameters.source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
source§fn into_color(self) -> U
fn into_color(self) -> U
source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
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> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self
into T
, while performing the appropriate scaling,
rounding and clamping.source§impl<'a, T, U> Stylize<'a, T> for Uwhere
U: Styled<Item = T>,
impl<'a, T, U> Stylize<'a, T> for Uwhere
U: Styled<Item = T>,
fn bg<C>(self, color: C) -> T
fn fg<C>(self, color: C) -> T
fn add_modifier(self, modifier: Modifier) -> T
fn remove_modifier(self, modifier: Modifier) -> T
fn reset(self) -> T
source§fn on_magenta(self) -> T
fn on_magenta(self) -> T
magenta
.source§fn on_dark_gray(self) -> T
fn on_dark_gray(self) -> T
dark_gray
.source§fn on_light_red(self) -> T
fn on_light_red(self) -> T
light_red
.source§fn light_green(self) -> T
fn light_green(self) -> T
light_green
.source§fn on_light_green(self) -> T
fn on_light_green(self) -> T
light_green
.source§fn light_yellow(self) -> T
fn light_yellow(self) -> T
light_yellow
.source§fn on_light_yellow(self) -> T
fn on_light_yellow(self) -> T
light_yellow
.source§fn light_blue(self) -> T
fn light_blue(self) -> T
light_blue
.source§fn on_light_blue(self) -> T
fn on_light_blue(self) -> T
light_blue
.source§fn light_magenta(self) -> T
fn light_magenta(self) -> T
light_magenta
.source§fn on_light_magenta(self) -> T
fn on_light_magenta(self) -> T
light_magenta
.source§fn light_cyan(self) -> T
fn light_cyan(self) -> T
light_cyan
.source§fn on_light_cyan(self) -> T
fn on_light_cyan(self) -> T
light_cyan
.source§fn not_italic(self) -> T
fn not_italic(self) -> T
ITALIC
modifier.source§fn underlined(self) -> T
fn underlined(self) -> T
UNDERLINED
modifier.source§fn not_underlined(self) -> T
fn not_underlined(self) -> T
UNDERLINED
modifier.source§fn slow_blink(self) -> T
fn slow_blink(self) -> T
SLOW_BLINK
modifier.source§fn not_slow_blink(self) -> T
fn not_slow_blink(self) -> T
SLOW_BLINK
modifier.source§fn rapid_blink(self) -> T
fn rapid_blink(self) -> T
RAPID_BLINK
modifier.source§fn not_rapid_blink(self) -> T
fn not_rapid_blink(self) -> T
RAPID_BLINK
modifier.source§fn not_reversed(self) -> T
fn not_reversed(self) -> T
REVERSED
modifier.HIDDEN
modifier.HIDDEN
modifier.source§fn crossed_out(self) -> T
fn crossed_out(self) -> T
CROSSED_OUT
modifier.source§fn not_crossed_out(self) -> T
fn not_crossed_out(self) -> T
CROSSED_OUT
modifier.source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string()
Read moresource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString
. Read moresource§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors
fails to cast.source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds
error is returned which contains
the unclamped color. Read more