TextRange

Struct TextRange 

Source
pub struct TextRange {
    pub start: usize,
    pub end: usize,
}
Expand description

Represents a range in text, used for cursor position and selection.

When start == end, this represents a cursor position (collapsed selection). When start != end, this represents a text selection.

§Invariants

  • Indices are in UTF-8 byte offsets (matching Rust’s String)
  • start can be greater than end for reverse selections
  • Use min() and max() for ordered access

Fields§

§start: usize

Start index of the range (can be > end for reverse selection)

§end: usize

End index of the range

Implementations§

Source§

impl TextRange

Source

pub const fn new(start: usize, end: usize) -> Self

Creates a new text range.

Source

pub const fn cursor(position: usize) -> Self

Creates a collapsed range (cursor) at the given position.

Source

pub const fn zero() -> Self

Creates a range from 0 to 0 (cursor at start).

Source

pub const fn collapsed(&self) -> bool

Returns true if this range is collapsed (cursor, not selection).

Source

pub fn length(&self) -> usize

Returns the length of the selection in characters.

Source

pub fn min(&self) -> usize

Returns the minimum (leftmost) index.

Source

pub fn max(&self) -> usize

Returns the maximum (rightmost) index.

Source

pub fn contains(&self, index: usize) -> bool

Returns true if this range contains the given index.

Source

pub fn coerce_in(&self, max: usize) -> Self

Coerces the range to be within [0, max].

Source

pub const fn all(length: usize) -> Self

Returns a range covering the entire text of given length.

Source

pub fn safe_slice<'a>(&self, text: &'a str) -> &'a str

Safely slices the text, clamping to valid UTF-8 char boundaries.

This handles edge cases where:

  • Range extends beyond text length
  • Range indices are not on char boundaries (e.g., in middle of multi-byte UTF-8)

Returns an empty string if the range is invalid.

Trait Implementations§

Source§

impl Clone for TextRange

Source§

fn clone(&self) -> TextRange

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for TextRange

Source§

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

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

impl Default for TextRange

Source§

fn default() -> TextRange

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

impl Hash for TextRange

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 TextRange

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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 TextRange

Source§

impl Eq for TextRange

Source§

impl StructuralPartialEq for TextRange

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.