Skip to main content

Buffer

Struct Buffer 

Source
pub struct Buffer {
    pub area: Rect,
    pub content: Vec<Cell>,
}
Expand description

A two-dimensional grid of terminal cells.

The buffer is the primary rendering target. Widgets write into a buffer, and the terminal backend diffs the current buffer against the previous frame to compute minimal screen updates.

Fields§

§area: Rect§content: Vec<Cell>

Implementations§

Source§

impl Buffer

Source

pub fn empty(area: Rect) -> Self

Create a new buffer filled with empty cells.

Source

pub fn with_lines<'a>(lines: impl IntoIterator<Item = &'a str>) -> Self

Create a buffer filled with a specific string (for testing).

Source

pub fn reset(&mut self)

Reset all cells to empty.

Source

pub fn resize(&mut self, area: Rect)

Resize the buffer (discards content).

Source

pub fn cell(&self, pos: Position) -> Option<&Cell>

Get the cell at (x, y), if within bounds.

Source

pub fn cell_mut(&mut self, pos: Position) -> Option<&mut Cell>

Get a mutable reference to the cell at (x, y).

Source

pub fn set_string(&mut self, x: u16, y: u16, string: &str, style: Style) -> u16

Set a string starting at (x, y) with the given style. Returns the number of columns consumed.

Source

pub fn set_string_truncated( &mut self, x: u16, y: u16, string: &str, max_width: u16, style: Style, ) -> u16

Set a string with a maximum width, truncating if necessary.

Source

pub fn set_line(&mut self, x: u16, y: u16, line: &Line, max_width: u16) -> u16

Set a styled line at position.

Source

pub fn set_span(&mut self, x: u16, y: u16, span: &Span, max_width: u16) -> u16

Set a single span at position with a maximum width.

Source

pub fn set_style(&mut self, area: Rect, style: Style)

Fill an area with a style (without changing symbols).

Source

pub fn fill(&mut self, area: Rect, symbol: &str, style: Style)

Fill an area with a character and style.

Source

pub fn diff<'a>(&'a self, other: &'a Buffer) -> Vec<(u16, u16, &'a Cell)>

Compute the diff between this buffer and another. Returns an iterator of (x, y, &Cell) for cells that differ.

Source

pub fn merge(&mut self, other: &Buffer)

Merge another buffer on top of this one at its area position.

Trait Implementations§

Source§

impl Clone for Buffer

Source§

fn clone(&self) -> Buffer

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Buffer

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Buffer

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Index<(u16, u16)> for Buffer

Source§

type Output = Cell

The returned type after indexing.
Source§

fn index(&self, (x, y): (u16, u16)) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
Source§

impl IndexMut<(u16, u16)> for Buffer

Source§

fn index_mut(&mut self, (x, y): (u16, u16)) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more
Source§

impl PartialEq for Buffer

Source§

fn eq(&self, other: &Buffer) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Buffer

Source§

impl StructuralPartialEq for Buffer

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.