Skip to main content

Offset

Struct Offset 

Source
pub struct Offset<S>
where S: Scale,
{ /* private fields */ }
Expand description

An offset counted in a specific Scale.

The phantom parameter is the whole point: Offset<Bytes> and Offset<Chars> are distinct types, so the substitution that produced a wrong column for every non-ASCII user is now E0308.

raw() is deliberately the ONLY way out. Reaching for it is the moment to ask which scale the consumer wants, which is exactly the question the bare usize let everyone skip.

Implementations§

Source§

impl<S> Offset<S>
where S: Scale,

Source

pub const ZERO: Offset<S>

The start of the text, in any scale. Always valid.

Source

pub const fn new(raw: usize) -> Offset<S>

Source

pub const fn raw(self) -> usize

Source

pub const fn scale_name() -> &'static str

Which ruler this was counted on — for diagnostics.

Source

pub const fn advance(self, by: usize) -> Offset<S>

Move forward within the SAME scale. Saturating, so it cannot wrap.

Trait Implementations§

Source§

impl<S> Clone for Offset<S>
where S: Scale,

Source§

fn clone(&self) -> Offset<S>

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<S> Copy for Offset<S>
where S: Scale,

Source§

impl<S> Debug for Offset<S>
where S: Debug + Scale,

Source§

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

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

impl<S> Eq for Offset<S>
where S: Eq + Scale,

Source§

impl<S> Hash for Offset<S>
where S: Hash + Scale,

Source§

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

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<S> Ord for Offset<S>
where S: Ord + Scale,

Source§

fn cmp(&self, other: &Offset<S>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<S> PartialEq for Offset<S>
where S: PartialEq + Scale,

Source§

fn eq(&self, other: &Offset<S>) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl<S> PartialOrd for Offset<S>
where S: PartialOrd + Scale,

Source§

fn partial_cmp(&self, other: &Offset<S>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<S> StructuralPartialEq for Offset<S>
where S: PartialEq + Scale,

Auto Trait Implementations§

§

impl<S> Freeze for Offset<S>

§

impl<S> RefUnwindSafe for Offset<S>
where S: RefUnwindSafe,

§

impl<S> Send for Offset<S>
where S: Send,

§

impl<S> Sync for Offset<S>
where S: Sync,

§

impl<S> Unpin for Offset<S>
where S: Unpin,

§

impl<S> UnsafeUnpin for Offset<S>

§

impl<S> UnwindSafe for Offset<S>
where S: UnwindSafe,

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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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.