Enum tor_netdoc::Pos

source ·
#[non_exhaustive]
pub enum Pos { None, Unknown, Invalid(usize), Byte { off: usize, }, PosInLine { line: usize, byte: usize, }, Raw { ptr: *const u8, }, }
Expand description

A position within a directory object. Used to tell where an error occurred.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

None

The error did not occur at any particular position.

This can happen when the error is something like a missing entry: the entry is supposed to go somewhere, but we can’t say where.

§

Unknown

The error occurred at an unknown position.

We should avoid using this case.

§

Invalid(usize)

The error occurred at an invalid offset within the string, or outside the string entirely.

This can only occur because of an internal error of some kind.

§

Byte

The error occurred at a particular byte within the string.

We try to convert these to a Pos before displaying them to the user.

Fields

§off: usize

Byte offset within a string.

§

PosInLine

The error occurred at a particular line (and possibly at a particular byte within the line.)

Fields

§line: usize

Line offset within a string.

§byte: usize

Byte offset within the line.

§

Raw

The error occurred at a position in memory. This shouldn’t be exposed to the user, but rather should be mapped to a position in the string.

Fields

§ptr: *const u8

A raw pointer to the position where the error occurred.

Implementations§

source§

impl Pos

source

pub fn from_offset(s: &str, off: usize) -> Self

Construct a Pos from an offset within a &str slice.

source

pub fn at(s: &str) -> Self

Construct a Pos from a slice of some other string. This Pos won’t be terribly helpful, but it may be converted into a useful Pos with within.

source

pub fn at_end_of(s: &str) -> Self

Construct Pos from the end of some other string.

source

pub fn from_byte(off: usize) -> Self

Construct a position from a byte offset.

source

pub fn from_line(line: usize, byte: usize) -> Self

Construct a position from a line and a byte offset within that line.

source

pub fn within(self, s: &str) -> Self

Given a position, if it was at a byte offset, convert it to a line-and-byte position within s.

Requires that this position was actually generated from s. If it was not, the results here may be nonsensical.

TODO: I wish I knew an efficient safe way to do this that guaranteed that we we always talking about the right string.

Trait Implementations§

source§

impl Clone for Pos

source§

fn clone(&self) -> Pos

Returns a copy 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 Pos

source§

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

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

impl Display for Pos

source§

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

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

impl PartialEq for Pos

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for Pos

source§

impl Eq for Pos

source§

impl Send for Pos

source§

impl StructuralPartialEq for Pos

source§

impl Sync for Pos

Auto Trait Implementations§

§

impl Freeze for Pos

§

impl RefUnwindSafe for Pos

§

impl Unpin for Pos

§

impl UnwindSafe for Pos

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

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> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more