pub struct Tabs<'a> { /* private fields */ }
Expand description
A widget that displays a horizontal set of Tabs with a single tab selected.
Each tab title is stored as a Line
which can be individually styled. The selected tab is set
using Tabs::select
and styled using Tabs::highlight_style
. The divider can be customized
with Tabs::divider
. Padding can be set with Tabs::padding
or Tabs::padding_left
and
Tabs::padding_right
.
The divider defaults to |, and padding defaults to a singular space on each side.
§Example
use ratatui::{
style::{Style, Stylize},
symbols,
widgets::{Block, Tabs},
};
Tabs::new(vec!["Tab1", "Tab2", "Tab3", "Tab4"])
.block(Block::bordered().title("Tabs"))
.style(Style::default().white())
.highlight_style(Style::default().yellow())
.select(2)
.divider(symbols::DOT)
.padding("->", "<-");
In addition to Tabs::new
, any iterator whose element is convertible to Line
can be collected
into Tabs
.
use ratatui::widgets::Tabs;
(0..5).map(|i| format!("Tab{i}")).collect::<Tabs>();
Implementations§
Source§impl<'a> Tabs<'a>
impl<'a> Tabs<'a>
Sourcepub fn new<Iter>(titles: Iter) -> Self
pub fn new<Iter>(titles: Iter) -> Self
Creates new Tabs
from their titles.
titles
can be a Vec
of &str
, String
or anything that can be converted into
Line
. As such, titles can be styled independently.
The selected tab can be set with Tabs::select
. The first tab has index 0 (this is also
the default index).
The selected tab can have a different style with Tabs::highlight_style
. This defaults to
a style with the Modifier::REVERSED
modifier added.
The default divider is a pipe (|
), but it can be customized with Tabs::divider
.
The entire widget can be styled with Tabs::style
.
The widget can be wrapped in a Block
using Tabs::block
.
§Examples
Basic titles.
use ratatui::widgets::Tabs;
let tabs = Tabs::new(vec!["Tab 1", "Tab 2"]);
Styled titles
use ratatui::{style::Stylize, widgets::Tabs};
let tabs = Tabs::new(vec!["Tab 1".red(), "Tab 2".blue()]);
Examples found in repository?
More examples
273 fn tabs(self) -> impl Widget {
274 let tab_titles = SelectedTab::iter().map(SelectedTab::to_tab_title);
275 let block = Block::new()
276 .title("Flex Layouts ".bold())
277 .title(" Use ◄ ► to change tab, ▲ ▼ to scroll, - + to change spacing ");
278 Tabs::new(tab_titles)
279 .block(block)
280 .highlight_style(Modifier::REVERSED)
281 .select(self.selected_tab as usize)
282 .divider(" ")
283 .padding("", "")
284 }
157 fn render_title_bar(&self, area: Rect, buf: &mut Buffer) {
158 let layout = Layout::horizontal([Constraint::Min(0), Constraint::Length(43)]);
159 let [title, tabs] = layout.areas(area);
160
161 Span::styled("Ratatui", THEME.app_title).render(title, buf);
162 let titles = Tab::iter().map(Tab::title);
163 Tabs::new(titles)
164 .style(THEME.tabs)
165 .highlight_style(THEME.tabs_selected)
166 .select(self.tab as usize)
167 .divider("")
168 .padding("", "")
169 .render(tabs, buf);
170 }
82fn render_inbox(selected_index: usize, area: Rect, buf: &mut Buffer) {
83 let vertical = Layout::vertical([Constraint::Length(1), Constraint::Min(0)]);
84 let [tabs, inbox] = vertical.areas(area);
85 let theme = THEME.email;
86 Tabs::new(vec![" Inbox ", " Sent ", " Drafts "])
87 .style(theme.tabs)
88 .highlight_style(theme.tabs_selected)
89 .select(0)
90 .divider("")
91 .render(tabs, buf);
92
93 let highlight_symbol = ">>";
94 let from_width = EMAILS
95 .iter()
96 .map(|e| e.from.width())
97 .max()
98 .unwrap_or_default();
99 let items = EMAILS.iter().map(|e| {
100 let from = format!("{:width$}", e.from, width = from_width).into();
101 ListItem::new(Line::from(vec![from, " ".into(), e.subject.into()]))
102 });
103 let mut state = ListState::default().with_selected(Some(selected_index));
104 StatefulWidget::render(
105 List::new(items)
106 .style(theme.inbox)
107 .highlight_style(theme.selected_item)
108 .highlight_symbol(highlight_symbol),
109 inbox,
110 buf,
111 &mut state,
112 );
113 let mut scrollbar_state = ScrollbarState::default()
114 .content_length(EMAILS.len())
115 .position(selected_index);
116 Scrollbar::default()
117 .begin_symbol(None)
118 .end_symbol(None)
119 .track_symbol(None)
120 .thumb_symbol("▐")
121 .render(inbox, buf, &mut scrollbar_state);
122}
Sourcepub fn titles<Iter>(self, titles: Iter) -> Self
pub fn titles<Iter>(self, titles: Iter) -> Self
Sets the titles of the tabs.
titles
is an iterator whose elements can be converted into Line
.
The selected tab can be set with Tabs::select
. The first tab has index 0 (this is also
the default index).
§Examples
Basic titles.
use ratatui::widgets::Tabs;
let tabs = Tabs::default().titles(vec!["Tab 1", "Tab 2"]);
Styled titles.
use ratatui::{style::Stylize, widgets::Tabs};
let tabs = Tabs::default().titles(vec!["Tab 1".red(), "Tab 2".blue()]);
Sourcepub fn block(self, block: Block<'a>) -> Self
pub fn block(self, block: Block<'a>) -> Self
Surrounds the Tabs
with a Block
.
Examples found in repository?
273 fn tabs(self) -> impl Widget {
274 let tab_titles = SelectedTab::iter().map(SelectedTab::to_tab_title);
275 let block = Block::new()
276 .title("Flex Layouts ".bold())
277 .title(" Use ◄ ► to change tab, ▲ ▼ to scroll, - + to change spacing ");
278 Tabs::new(tab_titles)
279 .block(block)
280 .highlight_style(Modifier::REVERSED)
281 .select(self.selected_tab as usize)
282 .divider(" ")
283 .padding("", "")
284 }
Sourcepub fn select<T: Into<Option<usize>>>(self, selected: T) -> Self
pub fn select<T: Into<Option<usize>>>(self, selected: T) -> Self
Sets the selected tab.
The first tab has index 0 (this is also the default index).
The selected tab can have a different style with Tabs::highlight_style
.
§Examples
Select the second tab.
use ratatui::widgets::Tabs;
let tabs = Tabs::new(vec!["Tab 1", "Tab 2"]).select(1);
Deselect the selected tab.
use ratatui::widgets::Tabs;
let tabs = Tabs::new(vec!["Tab 1", "Tab 2"]).select(None);
Examples found in repository?
More examples
273 fn tabs(self) -> impl Widget {
274 let tab_titles = SelectedTab::iter().map(SelectedTab::to_tab_title);
275 let block = Block::new()
276 .title("Flex Layouts ".bold())
277 .title(" Use ◄ ► to change tab, ▲ ▼ to scroll, - + to change spacing ");
278 Tabs::new(tab_titles)
279 .block(block)
280 .highlight_style(Modifier::REVERSED)
281 .select(self.selected_tab as usize)
282 .divider(" ")
283 .padding("", "")
284 }
157 fn render_title_bar(&self, area: Rect, buf: &mut Buffer) {
158 let layout = Layout::horizontal([Constraint::Min(0), Constraint::Length(43)]);
159 let [title, tabs] = layout.areas(area);
160
161 Span::styled("Ratatui", THEME.app_title).render(title, buf);
162 let titles = Tab::iter().map(Tab::title);
163 Tabs::new(titles)
164 .style(THEME.tabs)
165 .highlight_style(THEME.tabs_selected)
166 .select(self.tab as usize)
167 .divider("")
168 .padding("", "")
169 .render(tabs, buf);
170 }
82fn render_inbox(selected_index: usize, area: Rect, buf: &mut Buffer) {
83 let vertical = Layout::vertical([Constraint::Length(1), Constraint::Min(0)]);
84 let [tabs, inbox] = vertical.areas(area);
85 let theme = THEME.email;
86 Tabs::new(vec![" Inbox ", " Sent ", " Drafts "])
87 .style(theme.tabs)
88 .highlight_style(theme.tabs_selected)
89 .select(0)
90 .divider("")
91 .render(tabs, buf);
92
93 let highlight_symbol = ">>";
94 let from_width = EMAILS
95 .iter()
96 .map(|e| e.from.width())
97 .max()
98 .unwrap_or_default();
99 let items = EMAILS.iter().map(|e| {
100 let from = format!("{:width$}", e.from, width = from_width).into();
101 ListItem::new(Line::from(vec![from, " ".into(), e.subject.into()]))
102 });
103 let mut state = ListState::default().with_selected(Some(selected_index));
104 StatefulWidget::render(
105 List::new(items)
106 .style(theme.inbox)
107 .highlight_style(theme.selected_item)
108 .highlight_symbol(highlight_symbol),
109 inbox,
110 buf,
111 &mut state,
112 );
113 let mut scrollbar_state = ScrollbarState::default()
114 .content_length(EMAILS.len())
115 .position(selected_index);
116 Scrollbar::default()
117 .begin_symbol(None)
118 .end_symbol(None)
119 .track_symbol(None)
120 .thumb_symbol("▐")
121 .render(inbox, buf, &mut scrollbar_state);
122}
Sourcepub fn style<S: Into<Style>>(self, style: S) -> Self
pub fn style<S: Into<Style>>(self, style: S) -> Self
Sets the style of the tabs.
style
accepts any type that is convertible to Style
(e.g. Style
, Color
, or
your own type that implements Into<Style>
).
This will set the given style on the entire render area.
More precise style can be applied to the titles by styling the ones given to Tabs::new
.
The selected tab can be styled differently using Tabs::highlight_style
.
Examples found in repository?
157 fn render_title_bar(&self, area: Rect, buf: &mut Buffer) {
158 let layout = Layout::horizontal([Constraint::Min(0), Constraint::Length(43)]);
159 let [title, tabs] = layout.areas(area);
160
161 Span::styled("Ratatui", THEME.app_title).render(title, buf);
162 let titles = Tab::iter().map(Tab::title);
163 Tabs::new(titles)
164 .style(THEME.tabs)
165 .highlight_style(THEME.tabs_selected)
166 .select(self.tab as usize)
167 .divider("")
168 .padding("", "")
169 .render(tabs, buf);
170 }
More examples
82fn render_inbox(selected_index: usize, area: Rect, buf: &mut Buffer) {
83 let vertical = Layout::vertical([Constraint::Length(1), Constraint::Min(0)]);
84 let [tabs, inbox] = vertical.areas(area);
85 let theme = THEME.email;
86 Tabs::new(vec![" Inbox ", " Sent ", " Drafts "])
87 .style(theme.tabs)
88 .highlight_style(theme.tabs_selected)
89 .select(0)
90 .divider("")
91 .render(tabs, buf);
92
93 let highlight_symbol = ">>";
94 let from_width = EMAILS
95 .iter()
96 .map(|e| e.from.width())
97 .max()
98 .unwrap_or_default();
99 let items = EMAILS.iter().map(|e| {
100 let from = format!("{:width$}", e.from, width = from_width).into();
101 ListItem::new(Line::from(vec![from, " ".into(), e.subject.into()]))
102 });
103 let mut state = ListState::default().with_selected(Some(selected_index));
104 StatefulWidget::render(
105 List::new(items)
106 .style(theme.inbox)
107 .highlight_style(theme.selected_item)
108 .highlight_symbol(highlight_symbol),
109 inbox,
110 buf,
111 &mut state,
112 );
113 let mut scrollbar_state = ScrollbarState::default()
114 .content_length(EMAILS.len())
115 .position(selected_index);
116 Scrollbar::default()
117 .begin_symbol(None)
118 .end_symbol(None)
119 .track_symbol(None)
120 .thumb_symbol("▐")
121 .render(inbox, buf, &mut scrollbar_state);
122}
Sourcepub fn highlight_style<S: Into<Style>>(self, style: S) -> Self
pub fn highlight_style<S: Into<Style>>(self, style: S) -> Self
Sets the style for the highlighted tab.
style
accepts any type that is convertible to Style
(e.g. Style
, Color
, or
your own type that implements Into<Style>
).
Highlighted tab can be selected with Tabs::select
.
Examples found in repository?
More examples
273 fn tabs(self) -> impl Widget {
274 let tab_titles = SelectedTab::iter().map(SelectedTab::to_tab_title);
275 let block = Block::new()
276 .title("Flex Layouts ".bold())
277 .title(" Use ◄ ► to change tab, ▲ ▼ to scroll, - + to change spacing ");
278 Tabs::new(tab_titles)
279 .block(block)
280 .highlight_style(Modifier::REVERSED)
281 .select(self.selected_tab as usize)
282 .divider(" ")
283 .padding("", "")
284 }
157 fn render_title_bar(&self, area: Rect, buf: &mut Buffer) {
158 let layout = Layout::horizontal([Constraint::Min(0), Constraint::Length(43)]);
159 let [title, tabs] = layout.areas(area);
160
161 Span::styled("Ratatui", THEME.app_title).render(title, buf);
162 let titles = Tab::iter().map(Tab::title);
163 Tabs::new(titles)
164 .style(THEME.tabs)
165 .highlight_style(THEME.tabs_selected)
166 .select(self.tab as usize)
167 .divider("")
168 .padding("", "")
169 .render(tabs, buf);
170 }
82fn render_inbox(selected_index: usize, area: Rect, buf: &mut Buffer) {
83 let vertical = Layout::vertical([Constraint::Length(1), Constraint::Min(0)]);
84 let [tabs, inbox] = vertical.areas(area);
85 let theme = THEME.email;
86 Tabs::new(vec![" Inbox ", " Sent ", " Drafts "])
87 .style(theme.tabs)
88 .highlight_style(theme.tabs_selected)
89 .select(0)
90 .divider("")
91 .render(tabs, buf);
92
93 let highlight_symbol = ">>";
94 let from_width = EMAILS
95 .iter()
96 .map(|e| e.from.width())
97 .max()
98 .unwrap_or_default();
99 let items = EMAILS.iter().map(|e| {
100 let from = format!("{:width$}", e.from, width = from_width).into();
101 ListItem::new(Line::from(vec![from, " ".into(), e.subject.into()]))
102 });
103 let mut state = ListState::default().with_selected(Some(selected_index));
104 StatefulWidget::render(
105 List::new(items)
106 .style(theme.inbox)
107 .highlight_style(theme.selected_item)
108 .highlight_symbol(highlight_symbol),
109 inbox,
110 buf,
111 &mut state,
112 );
113 let mut scrollbar_state = ScrollbarState::default()
114 .content_length(EMAILS.len())
115 .position(selected_index);
116 Scrollbar::default()
117 .begin_symbol(None)
118 .end_symbol(None)
119 .track_symbol(None)
120 .thumb_symbol("▐")
121 .render(inbox, buf, &mut scrollbar_state);
122}
Sourcepub fn divider<T>(self, divider: T) -> Self
pub fn divider<T>(self, divider: T) -> Self
Sets the string to use as tab divider.
By default, the divider is a pipe (|
).
§Examples
Use a dot (•
) as separator.
use ratatui::{symbols, widgets::Tabs};
let tabs = Tabs::new(vec!["Tab 1", "Tab 2"]).divider(symbols::DOT);
Use dash (-
) as separator.
use ratatui::widgets::Tabs;
let tabs = Tabs::new(vec!["Tab 1", "Tab 2"]).divider("-");
Examples found in repository?
More examples
273 fn tabs(self) -> impl Widget {
274 let tab_titles = SelectedTab::iter().map(SelectedTab::to_tab_title);
275 let block = Block::new()
276 .title("Flex Layouts ".bold())
277 .title(" Use ◄ ► to change tab, ▲ ▼ to scroll, - + to change spacing ");
278 Tabs::new(tab_titles)
279 .block(block)
280 .highlight_style(Modifier::REVERSED)
281 .select(self.selected_tab as usize)
282 .divider(" ")
283 .padding("", "")
284 }
157 fn render_title_bar(&self, area: Rect, buf: &mut Buffer) {
158 let layout = Layout::horizontal([Constraint::Min(0), Constraint::Length(43)]);
159 let [title, tabs] = layout.areas(area);
160
161 Span::styled("Ratatui", THEME.app_title).render(title, buf);
162 let titles = Tab::iter().map(Tab::title);
163 Tabs::new(titles)
164 .style(THEME.tabs)
165 .highlight_style(THEME.tabs_selected)
166 .select(self.tab as usize)
167 .divider("")
168 .padding("", "")
169 .render(tabs, buf);
170 }
82fn render_inbox(selected_index: usize, area: Rect, buf: &mut Buffer) {
83 let vertical = Layout::vertical([Constraint::Length(1), Constraint::Min(0)]);
84 let [tabs, inbox] = vertical.areas(area);
85 let theme = THEME.email;
86 Tabs::new(vec![" Inbox ", " Sent ", " Drafts "])
87 .style(theme.tabs)
88 .highlight_style(theme.tabs_selected)
89 .select(0)
90 .divider("")
91 .render(tabs, buf);
92
93 let highlight_symbol = ">>";
94 let from_width = EMAILS
95 .iter()
96 .map(|e| e.from.width())
97 .max()
98 .unwrap_or_default();
99 let items = EMAILS.iter().map(|e| {
100 let from = format!("{:width$}", e.from, width = from_width).into();
101 ListItem::new(Line::from(vec![from, " ".into(), e.subject.into()]))
102 });
103 let mut state = ListState::default().with_selected(Some(selected_index));
104 StatefulWidget::render(
105 List::new(items)
106 .style(theme.inbox)
107 .highlight_style(theme.selected_item)
108 .highlight_symbol(highlight_symbol),
109 inbox,
110 buf,
111 &mut state,
112 );
113 let mut scrollbar_state = ScrollbarState::default()
114 .content_length(EMAILS.len())
115 .position(selected_index);
116 Scrollbar::default()
117 .begin_symbol(None)
118 .end_symbol(None)
119 .track_symbol(None)
120 .thumb_symbol("▐")
121 .render(inbox, buf, &mut scrollbar_state);
122}
Sourcepub fn padding<T, U>(self, left: T, right: U) -> Self
pub fn padding<T, U>(self, left: T, right: U) -> Self
Sets the padding between tabs.
Both default to space.
§Examples
A space on either side of the tabs.
use ratatui::widgets::Tabs;
let tabs = Tabs::new(vec!["Tab 1", "Tab 2"]).padding(" ", " ");
Nothing on either side of the tabs.
use ratatui::widgets::Tabs;
let tabs = Tabs::new(vec!["Tab 1", "Tab 2"]).padding("", "");
Examples found in repository?
More examples
273 fn tabs(self) -> impl Widget {
274 let tab_titles = SelectedTab::iter().map(SelectedTab::to_tab_title);
275 let block = Block::new()
276 .title("Flex Layouts ".bold())
277 .title(" Use ◄ ► to change tab, ▲ ▼ to scroll, - + to change spacing ");
278 Tabs::new(tab_titles)
279 .block(block)
280 .highlight_style(Modifier::REVERSED)
281 .select(self.selected_tab as usize)
282 .divider(" ")
283 .padding("", "")
284 }
157 fn render_title_bar(&self, area: Rect, buf: &mut Buffer) {
158 let layout = Layout::horizontal([Constraint::Min(0), Constraint::Length(43)]);
159 let [title, tabs] = layout.areas(area);
160
161 Span::styled("Ratatui", THEME.app_title).render(title, buf);
162 let titles = Tab::iter().map(Tab::title);
163 Tabs::new(titles)
164 .style(THEME.tabs)
165 .highlight_style(THEME.tabs_selected)
166 .select(self.tab as usize)
167 .divider("")
168 .padding("", "")
169 .render(tabs, buf);
170 }
Sourcepub fn padding_left<T>(self, padding: T) -> Self
pub fn padding_left<T>(self, padding: T) -> Self
Sets the left side padding between tabs.
Defaults to a space.
§Example
An arrow on the left of tabs.
use ratatui::widgets::Tabs;
let tabs = Tabs::new(vec!["Tab 1", "Tab 2"]).padding_left("->");
Sourcepub fn padding_right<T>(self, padding: T) -> Self
pub fn padding_right<T>(self, padding: T) -> Self
Sets the right side padding between tabs.
Defaults to a space.
§Example
An arrow on the right of tabs.
use ratatui::widgets::Tabs;
let tabs = Tabs::new(vec!["Tab 1", "Tab 2"]).padding_right("<-");
Trait Implementations§
Source§impl Default for Tabs<'_>
impl Default for Tabs<'_>
Source§fn default() -> Self
fn default() -> Self
Returns a default Tabs
widget.
The default widget has:
- No tabs
- No selected tab
- The highlight style is set to reversed.
- The divider is set to a pipe (
|
). - The padding on the left and right is set to a space.
This is rarely useful on its own without calling Tabs::titles
.
§Examples
use ratatui::widgets::Tabs;
let tabs = Tabs::default().titles(["Tab 1", "Tab 2"]);
Source§impl<'a, Item> FromIterator<Item> for Tabs<'a>
impl<'a, Item> FromIterator<Item> for Tabs<'a>
Source§fn from_iter<Iter: IntoIterator<Item = Item>>(iter: Iter) -> Self
fn from_iter<Iter: IntoIterator<Item = Item>>(iter: Iter) -> Self
Source§impl WidgetRef for Tabs<'_>
impl WidgetRef for Tabs<'_>
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 Tabs<'a>
impl<'a> StructuralPartialEq for Tabs<'a>
Auto Trait Implementations§
impl<'a> Freeze for Tabs<'a>
impl<'a> RefUnwindSafe for Tabs<'a>
impl<'a> Send for Tabs<'a>
impl<'a> Sync for Tabs<'a>
impl<'a> Unpin for Tabs<'a>
impl<'a> UnwindSafe for Tabs<'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§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, 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