Skip to main content

Cell

Struct Cell 

Source
#[repr(C, align(16))]
pub struct Cell { pub content: CellContent, pub fg: PackedRgba, pub bg: PackedRgba, pub attrs: CellAttrs, }
Expand description

A single terminal cell (16 bytes).

§Layout

#[repr(C, align(16))]
Cell {
    content: CellContent,  // 4 bytes
    fg: PackedRgba,        // 4 bytes
    bg: PackedRgba,        // 4 bytes
    attrs: CellAttrs,      // 4 bytes
}

§Invariants

  • Size is exactly 16 bytes (verified by compile-time assert)
  • All fields are valid (no uninitialized memory)
  • Continuation cells should not have meaningful fg/bg (they inherit from parent)

§Default

The default cell is empty with transparent background, white foreground, and no style attributes.

Fields§

§content: CellContent

Character or grapheme content.

§fg: PackedRgba

Foreground color.

§bg: PackedRgba

Background color.

§attrs: CellAttrs

Style flags and hyperlink ID.

Implementations§

Source§

impl Cell

Source

pub const CONTINUATION: Self

A continuation cell (placeholder for wide characters).

When a character has display width > 1, subsequent cells are filled with this to indicate they are “owned” by the previous cell.

Source

pub const fn new(content: CellContent) -> Self

Create a new cell with the given content and default colors.

Source

pub const fn from_char(c: char) -> Self

Create a cell from a single character.

Source

pub const fn is_continuation(&self) -> bool

Check if this is a continuation cell.

Source

pub const fn is_empty(&self) -> bool

Check if this cell is empty.

Source

pub const fn width_hint(&self) -> usize

Get the display width hint for this cell.

See CellContent::width_hint for details.

Source

pub fn bits_eq(&self, other: &Self) -> bool

Bitwise equality comparison (fast path for diffing).

Uses bitwise AND (&) instead of short-circuit AND (&&) so all four u32 comparisons are always evaluated. This avoids branch mispredictions in tight loops and allows LLVM to lower the check to a single 128-bit SIMD compare on supported targets.

Source

pub const fn with_char(self, c: char) -> Self

Set the cell content to a character, preserving other fields.

Source

pub const fn with_fg(self, fg: PackedRgba) -> Self

Set the foreground color.

Source

pub const fn with_bg(self, bg: PackedRgba) -> Self

Set the background color.

Source

pub const fn with_attrs(self, attrs: CellAttrs) -> Self

Set the style attributes.

Trait Implementations§

Source§

impl Clone for Cell

Source§

fn clone(&self) -> Cell

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 Copy for Cell

Source§

impl Debug for Cell

Source§

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

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

impl Default for Cell

Source§

fn default() -> Self

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

impl Eq for Cell

Source§

impl PartialEq for Cell

Source§

fn eq(&self, other: &Cell) -> 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 StructuralPartialEq for Cell

Auto Trait Implementations§

§

impl Freeze for Cell

§

impl RefUnwindSafe for Cell

§

impl Send for Cell

§

impl Sync for Cell

§

impl Unpin for Cell

§

impl UnsafeUnpin for Cell

§

impl UnwindSafe for Cell

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.