[−][src]Struct text_size::TextRange
A range in text, represented as a pair of TextSize
.
It is a logic error for start
to be greater than end
.
Implementations
impl TextRange
[src]
pub fn new(start: TextSize, end: TextSize) -> TextRange
[src]
Creates a new TextRange
with the given start
and end
(start..end
).
Panics
Panics if end < start
.
Examples
let start = TextSize::from(5); let end = TextSize::from(10); let range = TextRange::new(start, end); assert_eq!(range.start(), start); assert_eq!(range.end(), end); assert_eq!(range.len(), end - start);
pub fn at(offset: TextSize, len: TextSize) -> TextRange
[src]
Create a new TextRange
with the given offset
and len
(offset..offset + len
).
Examples
let text = "0123456789"; let offset = TextSize::from(2); let length = TextSize::from(5); let range = TextRange::at(offset, length); assert_eq!(range, TextRange::new(offset, offset + length)); assert_eq!(&text[range], "23456")
pub fn empty(offset: TextSize) -> TextRange
[src]
Create a zero-length range at the specified offset (offset..offset
).
Examples
let point: TextSize; let range = TextRange::empty(point); assert!(range.is_empty()); assert_eq!(range, TextRange::new(point, point));
pub fn up_to(end: TextSize) -> TextRange
[src]
Create a range up to the given end (..end
).
Examples
let point: TextSize; let range = TextRange::up_to(point); assert_eq!(range.len(), point); assert_eq!(range, TextRange::new(0.into(), point)); assert_eq!(range, TextRange::at(0.into(), point));
impl TextRange
[src]
Identity methods.
pub const fn start(self) -> TextSize
[src]
The start point of this range.
pub const fn end(self) -> TextSize
[src]
The end point of this range.
pub const fn len(self) -> TextSize
[src]
The size of this range.
pub const fn is_empty(self) -> bool
[src]
Check if this range is empty.
impl TextRange
[src]
Manipulation methods.
pub fn contains(self, offset: TextSize) -> bool
[src]
Check if this range contains an offset.
The end index is considered excluded.
Examples
let (start, end): (TextSize, TextSize); let range = TextRange::new(start, end); assert!(range.contains(start)); assert!(!range.contains(end));
pub fn contains_inclusive(self, offset: TextSize) -> bool
[src]
Check if this range contains an offset.
The end index is considered included.
Examples
let (start, end): (TextSize, TextSize); let range = TextRange::new(start, end); assert!(range.contains_inclusive(start)); assert!(range.contains_inclusive(end));
pub fn contains_range(self, other: TextRange) -> bool
[src]
Check if this range completely contains another range.
Examples
let larger = TextRange::new(0.into(), 20.into()); let smaller = TextRange::new(5.into(), 15.into()); assert!(larger.contains_range(smaller)); assert!(!smaller.contains_range(larger)); // a range always contains itself assert!(larger.contains_range(larger)); assert!(smaller.contains_range(smaller));
pub fn intersect(self, other: TextRange) -> Option<TextRange>
[src]
The range covered by both ranges, if it exists. If the ranges touch but do not overlap, the output range is empty.
Examples
assert_eq!( TextRange::intersect( TextRange::new(0.into(), 10.into()), TextRange::new(5.into(), 15.into()), ), Some(TextRange::new(5.into(), 10.into())), );
pub fn cover(self, other: TextRange) -> TextRange
[src]
Extends the range to cover other
as well.
Examples
assert_eq!( TextRange::cover( TextRange::new(0.into(), 5.into()), TextRange::new(15.into(), 20.into()), ), TextRange::new(0.into(), 20.into()), );
pub fn cover_offset(self, offset: TextSize) -> TextRange
[src]
Extends the range to cover other
offsets as well.
Examples
assert_eq!( TextRange::empty(0.into()).cover_offset(20.into()), TextRange::new(0.into(), 20.into()), )
pub fn checked_add(self, offset: TextSize) -> Option<TextRange>
[src]
Add an offset to this range.
Note that this is not appropriate for changing where a TextRange
is
within some string; rather, it is for changing the reference anchor
that the TextRange
is measured against.
The unchecked version (Add::add
) will always panic on overflow,
in contrast to primitive integers, which check in debug mode only.
pub fn checked_sub(self, offset: TextSize) -> Option<TextRange>
[src]
Subtract an offset from this range.
Note that this is not appropriate for changing where a TextRange
is
within some string; rather, it is for changing the reference anchor
that the TextRange
is measured against.
The unchecked version (Sub::sub
) will always panic on overflow,
in contrast to primitive integers, which check in debug mode only.
pub fn ordering(self, other: TextRange) -> Ordering
[src]
Relative order of the two ranges (overlapping ranges are considered equal).
This is useful when, for example, binary searching an array of disjoint ranges.
Examples
let a = TextRange::new(0.into(), 3.into()); let b = TextRange::new(4.into(), 5.into()); assert_eq!(a.ordering(b), Ordering::Less); let a = TextRange::new(0.into(), 3.into()); let b = TextRange::new(3.into(), 5.into()); assert_eq!(a.ordering(b), Ordering::Less); let a = TextRange::new(0.into(), 3.into()); let b = TextRange::new(2.into(), 5.into()); assert_eq!(a.ordering(b), Ordering::Equal); let a = TextRange::new(0.into(), 3.into()); let b = TextRange::new(2.into(), 2.into()); assert_eq!(a.ordering(b), Ordering::Equal); let a = TextRange::new(2.into(), 3.into()); let b = TextRange::new(2.into(), 2.into()); assert_eq!(a.ordering(b), Ordering::Greater);
Trait Implementations
impl<'_> Add<&'_ TextSize> for TextRange
[src]
type Output = TextRange
The resulting type after applying the +
operator.
fn add(self, other: &TextSize) -> TextRange
[src]
impl<T, '_> Add<T> for &'_ TextRange where
TextRange: Add<T, Output = TextRange>,
[src]
TextRange: Add<T, Output = TextRange>,
type Output = TextRange
The resulting type after applying the +
operator.
fn add(self, other: T) -> TextRange
[src]
impl Add<TextSize> for TextRange
[src]
type Output = TextRange
The resulting type after applying the +
operator.
fn add(self, offset: TextSize) -> TextRange
[src]
impl<A> AddAssign<A> for TextRange where
TextRange: Add<A, Output = TextRange>,
[src]
TextRange: Add<A, Output = TextRange>,
fn add_assign(&mut self, rhs: A)
[src]
impl Clone for TextRange
[src]
impl Copy for TextRange
[src]
impl Debug for TextRange
[src]
impl Default for TextRange
[src]
impl Eq for TextRange
[src]
impl<T> From<TextRange> for Range<T> where
T: From<TextSize>,
[src]
T: From<TextSize>,
impl Hash for TextRange
[src]
fn hash<__H: Hasher>(&self, state: &mut __H)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl Index<TextRange> for str
[src]
impl Index<TextRange> for String
[src]
impl IndexMut<TextRange> for str
[src]
impl IndexMut<TextRange> for String
[src]
impl PartialEq<TextRange> for TextRange
[src]
impl RangeBounds<TextSize> for TextRange
[src]
fn start_bound(&self) -> Bound<&TextSize>
[src]
fn end_bound(&self) -> Bound<&TextSize>
[src]
fn assert_len(self, len: usize) -> Range<usize> where
Self: RangeBounds<usize>,
[src]
Self: RangeBounds<usize>,
fn contains<U>(&self, item: &U) -> bool where
T: PartialOrd<U>,
U: PartialOrd<T> + ?Sized,
1.35.0[src]
T: PartialOrd<U>,
U: PartialOrd<T> + ?Sized,
impl StructuralEq for TextRange
[src]
impl StructuralPartialEq for TextRange
[src]
impl<'_> Sub<&'_ TextSize> for TextRange
[src]
type Output = TextRange
The resulting type after applying the -
operator.
fn sub(self, other: &TextSize) -> TextRange
[src]
impl<T, '_> Sub<T> for &'_ TextRange where
TextRange: Sub<T, Output = TextRange>,
[src]
TextRange: Sub<T, Output = TextRange>,
type Output = TextRange
The resulting type after applying the -
operator.
fn sub(self, other: T) -> TextRange
[src]
impl Sub<TextSize> for TextRange
[src]
type Output = TextRange
The resulting type after applying the -
operator.
fn sub(self, offset: TextSize) -> TextRange
[src]
impl<S> SubAssign<S> for TextRange where
TextRange: Sub<S, Output = TextRange>,
[src]
TextRange: Sub<S, Output = TextRange>,
fn sub_assign(&mut self, rhs: S)
[src]
Auto Trait Implementations
impl RefUnwindSafe for TextRange
impl Send for TextRange
impl Sync for TextRange
impl Unpin for TextRange
impl UnwindSafe for TextRange
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,