Struct Path

Source
pub struct Path {
    qualifier: Vec<Identifier>,
    identifier: Identifier,
    is_absolute: bool,
    absolute_path: Option<Vec<Symbol>>,
    pub span: Span,
    pub id: NodeID,
}
Expand description

A Path in a program.

Fields§

§qualifier: Vec<Identifier>

The qualifying namespace segments written by the user, excluding the item itself. e.g., in foo::bar::baz, this would be [foo, bar].

§identifier: Identifier

The final item in the path, e.g., baz in foo::bar::baz.

§is_absolute: bool

Is this path an absolute path? e.g. ::foo::bar::baz.

§absolute_path: Option<Vec<Symbol>>

The fully resolved path. We may not know this until the pass PathResolution pass runs. For path that refer to global items (structs, consts, functions), absolute_path is guaranteed to be set after the pass PathResolution.

§span: Span

A span locating where the path occurred in the source.

§id: NodeID

The ID of the node.

Implementations§

Source§

impl Path

Source

pub fn new( qualifier: Vec<Identifier>, identifier: Identifier, is_absolute: bool, absolute_path: Option<Vec<Symbol>>, span: Span, id: NodeID, ) -> Self

Creates a new Path from the given components.

  • qualifier: The namespace segments (e.g., foo::bar in foo::bar::baz).
  • identifier: The final item in the path (e.g., baz).
  • is_absolute: Whether the path is absolute (starts with ::).
  • absolute_path: Optionally, the fully resolved symbolic path.
  • span: The source code span for this path.
  • id: The node ID.
Source

pub fn identifier(&self) -> Identifier

Returns the final identifier of the path (e.g., baz in foo::bar::baz).

Source

pub fn qualifier(&self) -> &[Identifier]

Returns a slice of the qualifier segments (e.g., [foo, bar] in foo::bar::baz).

Source

pub fn is_absolute(&self) -> bool

Returns true if the path is absolute (i.e., starts with ::).

Source

pub fn as_symbols(&self) -> Vec<Symbol>

Returns a Vec<Symbol> representing the full symbolic path: the qualifier segments followed by the final identifier.

Note: this refers to the user path which is not necessarily the absolute path.

Source

pub fn try_absolute_path(&self) -> Option<Vec<Symbol>>

Returns an optional vector of Symbols representing the resolved absolute path, or None if resolution has not yet occurred.

Source

pub fn absolute_path(&self) -> Vec<Symbol>

Returns a vector of Symbols representing the resolved absolute path.

If the path is not an absolute path, this method panics if the absolute path has not been resolved yet. For relative paths, this is expected to be called only after path resolution has occurred.

Source

pub fn into_absolute(self) -> Self

Converts this Path into an absolute path by setting its is_absolute flag to true.

This does not alter the qualifier or identifier, nor does it compute or modify the resolved absolute_path.

Source

pub fn with_updated_last_symbol(self, new_symbol: Symbol) -> Self

Returns a new Path instance with the last segment’s Symbol and the last symbol in the absolute_path (if present) replaced with new_symbol.

Other fields remain unchanged.

Source

pub fn with_absolute_path(self, absolute_path: Option<Vec<Symbol>>) -> Self

Sets self.absolute_path to absolute_path

Source

pub fn with_module_prefix(self, module_prefix: &[Symbol]) -> Self

Sets the absolute_path by prepending the given module_prefix to the path’s own qualifier and identifier. Returns the updated Path.

Trait Implementations§

Source§

impl Clone for Path

Source§

fn clone(&self) -> Path

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 Path

Source§

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

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

impl Default for Path

Source§

fn default() -> Path

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

impl<'de> Deserialize<'de> for Path

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for Path

Source§

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

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

impl From<Identifier> for Path

Source§

fn from(value: Identifier) -> Self

Converts to this type from the input type.
Source§

impl From<Path> for Expression

Source§

fn from(value: Path) -> Self

Converts to this type from the input type.
Source§

impl Hash for Path

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 Node for Path

Source§

fn span(&self) -> Span

Returns the span of the node.
Source§

fn set_span(&mut self, span: Span)

Sets the span of the node.
Source§

fn id(&self) -> NodeID

Returns the ID of the node.
Source§

fn set_id(&mut self, id: NodeID)

Sets the ID of the node.
Source§

impl PartialEq for Path

Source§

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

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for Path

Source§

impl StructuralPartialEq for Path

Auto Trait Implementations§

§

impl Freeze for Path

§

impl RefUnwindSafe for Path

§

impl Send for Path

§

impl Sync for Path

§

impl Unpin for Path

§

impl UnwindSafe for Path

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
§

impl<'de, T> DeserializeExt<'de> for T

§

fn take_from_value<D>( value: &mut Value, field: &str, ) -> Result<T, <D as Deserializer<'de>>::Error>
where D: Deserializer<'de>,

§

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

§

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.

§

impl<T> Instrument for T

§

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

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

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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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
§

impl<T> ToSmolStr for T
where T: Display + ?Sized,

§

fn to_smolstr(&self) -> SmolStr

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
§

impl<T> ToStringFallible for T
where T: Display,

§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

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<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

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

Source§

impl<T> GraphNode for T
where T: 'static + Clone + Eq + PartialEq + Debug + Hash,