Element

Trait Element 

Source
pub trait Element<'s> {
    // Required methods
    fn width(&self) -> usize;
    fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>;
}
Expand description

A particular widget that can be rendered to the TUI.

§Lifetime parameter

The 's lifetime parameter indicates the lifetime of any values (e.g., strings) borrowed by the Element. For example:

use line_ui::element::Text;

let my_string = String::from("hello");
let my_element = Text::new(&my_string);

Here, my_element implements Element<'s>, where 's is the lifetime of my_string.

Required Methods§

Source

fn width(&self) -> usize

The width of the element, in columns.

Source

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Renders the element into a sequence of chunks.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<'s> Element<'s> for ()

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Source§

impl<'s, A> Element<'s> for (A,)
where A: Element<'s>,

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Source§

impl<'s, A, B> Element<'s> for (A, B)
where A: Element<'s>, B: Element<'s>,

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Source§

impl<'s, A, B, C> Element<'s> for (A, B, C)
where A: Element<'s>, B: Element<'s>, C: Element<'s>,

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Source§

impl<'s, A, B, C, D> Element<'s> for (A, B, C, D)
where A: Element<'s>, B: Element<'s>, C: Element<'s>, D: Element<'s>,

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Source§

impl<'s, A, B, C, D, E> Element<'s> for (A, B, C, D, E)
where A: Element<'s>, B: Element<'s>, C: Element<'s>, D: Element<'s>, E: Element<'s>,

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Source§

impl<'s, A, B, C, D, E, F> Element<'s> for (A, B, C, D, E, F)
where A: Element<'s>, B: Element<'s>, C: Element<'s>, D: Element<'s>, E: Element<'s>, F: Element<'s>,

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Source§

impl<'s, A, B, C, D, E, F, G> Element<'s> for (A, B, C, D, E, F, G)
where A: Element<'s>, B: Element<'s>, C: Element<'s>, D: Element<'s>, E: Element<'s>, F: Element<'s>, G: Element<'s>,

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Source§

impl<'s, A, B, C, D, E, F, G, H> Element<'s> for (A, B, C, D, E, F, G, H)
where A: Element<'s>, B: Element<'s>, C: Element<'s>, D: Element<'s>, E: Element<'s>, F: Element<'s>, G: Element<'s>, H: Element<'s>,

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Source§

impl<'s, A, B, C, D, E, F, G, H, I> Element<'s> for (A, B, C, D, E, F, G, H, I)
where A: Element<'s>, B: Element<'s>, C: Element<'s>, D: Element<'s>, E: Element<'s>, F: Element<'s>, G: Element<'s>, H: Element<'s>, I: Element<'s>,

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Source§

impl<'s, A, B, C, D, E, F, G, H, I, J> Element<'s> for (A, B, C, D, E, F, G, H, I, J)
where A: Element<'s>, B: Element<'s>, C: Element<'s>, D: Element<'s>, E: Element<'s>, F: Element<'s>, G: Element<'s>, H: Element<'s>, I: Element<'s>, J: Element<'s>,

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Source§

impl<'s, E: Element<'s> + ?Sized> Element<'s> for &E

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Source§

impl<'s, E: Element<'s>> Element<'s> for Option<E>

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Source§

impl<'s, E: Element<'s>> Element<'s> for [E]

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Source§

impl<'s, E: Element<'s>, const N: usize> Element<'s> for [E; N]

Source§

fn width(&self) -> usize

Source§

fn render(&self) -> impl DoubleEndedIterator<Item = RenderChunk<'s>>

Implementors§

Source§

impl<'s> Element<'s> for BoxElement<'s>

Source§

impl<'s> Element<'s> for Cursor

Source§

impl<'s> Element<'s> for Gap

Source§

impl<'s> Element<'s> for Text<'s>

Source§

impl<'s, E, T> Element<'s> for FixedWidth<E, T>
where E: Element<'s>, T: Element<'s>,

Source§

impl<'s, E: Element<'s>> Element<'s> for Styled<E>