Skip to main content

WidthMode

Enum WidthMode 

Source
pub enum WidthMode {
    Wc,
    Grapheme,
}
Expand description

How grapheme clusters are measured for terminal-cell layout.

This enum does not control segmentation: grapheme_cells always segments by extended grapheme cluster. It controls only width calculation for each cluster. The East-Asian Ambiguous policy is orthogonal and is passed as a separate eaw_wide boolean to char_width and grapheme_width.

Variants§

§

Wc

Measure each cluster by the width of its first code point.

This is wcwidth-style and intentionally cluster-blind: variation selectors, zero-width joiners, and emoji presentation overrides in the rest of the cluster do not change the result. Use this when matching older or simpler terminal width behavior is more important than cluster-aware emoji presentation.

§

Grapheme

Measure the whole grapheme cluster.

This mode accounts for variation selectors, regional indicators, zero-width-joiner sequences, and pictographic presentation when deciding whether a cluster occupies zero, one, or two cells. Use it for modern terminal rendering that treats emoji and joined clusters as a single displayed unit.

Implementations§

Source§

impl WidthMode

Source

pub fn grapheme_width(self, g: &str, eaw_wide: bool) -> u8

Measure one extended grapheme cluster under this mode.

In WidthMode::Wc mode, the width is the char_width of g’s first code point, or 0 for an empty string. In WidthMode::Grapheme mode, the width is grapheme_width for the whole cluster.

§Parameters
  • g — an extended grapheme cluster. Passing a longer string is accepted but only the first code point is considered in Wc mode.
  • eaw_wide — East-Asian Ambiguous policy; see char_width.
§Returns

The cluster width in terminal cells, normally 0, 1, or 2.

§Errors and panics

This method does not fail or intentionally panic.

Trait Implementations§

Source§

impl Clone for WidthMode

Source§

fn clone(&self) -> WidthMode

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 WidthMode

Source§

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

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

impl Default for WidthMode

Source§

fn default() -> WidthMode

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

impl Hash for WidthMode

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for WidthMode

Source§

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

Source§

impl Eq for WidthMode

Source§

impl StructuralPartialEq for WidthMode

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.
§

impl<T> ErasedDestructor for T
where T: 'static,