ResolutionResult

Struct ResolutionResult 

Source
pub struct ResolutionResult<T> { /* private fields */ }
Expand description

Result structure for a namespace resolution.

Implementations§

Source§

impl<T> ResolutionResult<T>

Source

pub fn new(unresolved_reference: Data<T>) -> Self

Creates a new, empty resolution result for the given unresolved reference, to be used as a placeholder when no namespace is actually available. It will behave as if resolution failed because the namespace being looked in was itself not resolved. If an item is passed via the reference, it will be returned by as_item(). as_namespace() will return None.

Source

pub fn filter_items<F: Fn(&T) -> bool>(self, filter: F) -> Self

Filter the resulting items by some predicate. This also filters out namespaces.

Source

pub fn filter_all_items(self) -> Self

Filter the resulting items by some predicate. This also filters out namespaces.

Source

pub fn filter_namespaces(self) -> Self

Filter out anything that isn’t a namespace.

Source

pub fn expect_one<F1, F2>( self, parse_context: &mut Context<'_>, if_not_applicable: F1, if_ambiguous: F2, ) -> Self
where F1: FnOnce(String, &mut Context<'_>) -> bool, F2: FnOnce(String, &mut Context<'_>) -> bool,

Expects a single item, yielding diagnostics if this isn’t the case. If ambiguous or if all matching elements were not applicable (filtered out), the specified functions are called. They receive the reference name and the parse context as arguments to form a suitable diagnostic message. If they return false, a default diagnostic message will be emitted instead.

Source

pub fn expect_not_ambiguous<F>( self, parse_context: &mut Context<'_>, if_ambiguous: F, ) -> Self
where F: FnOnce(String, &mut Context<'_>) -> bool,

Expects zero or one item(s), yielding diagnostics if this isn’t the case. If ambiguous, the specified function is called. It receives the reference name and the parse context as arguments to form a suitable diagnostic message. If it returns false, a default diagnostic message will be emitted instead.

Source

pub fn expect_multiple<F>( self, parse_context: &mut Context<'_>, if_not_applicable: F, ) -> Self
where F: FnOnce(String, &mut Context<'_>) -> bool,

Expects a one or more items, yielding diagnostics if this isn’t the case. If all matching elements were not applicable (filtered out), the specified functions are called. They receive the reference name and the parse context as arguments to form a suitable diagnostic message. If they return false, a default diagnostic message will be emitted instead.

Source

pub fn as_item(&self) -> Reference<T>

Silently returns the first matching item, if any. If there are none, this just returns an unresolved reference. Use filter_items().expect_one() to formulate error messages if there are multiple or no items available.

Source

pub fn as_opt_item(&self) -> Option<Reference<T>>

Silently returns the first matching item, if any. Unlike as_item(), this returns None if there are no matches.

Source

pub fn as_namespace(&self) -> Option<Reference<T>>

Silently returns the first matching namespace. Use filter_namespaces().expect_one() to formulate error messages if there are multiple or no namespaces available.

Source

pub fn expect_not_yet_defined(&self) -> Result<()>

Return an error if one or more definitions were found for this name resolution, to be used just before defining a new item.

Trait Implementations§

Source§

impl<T: Clone> Clone for ResolutionResult<T>

Source§

fn clone(&self) -> ResolutionResult<T>

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<T: Debug> Debug for ResolutionResult<T>

Source§

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

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

impl<T> Display for ResolutionResult<T>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> Freeze for ResolutionResult<T>

§

impl<T> RefUnwindSafe for ResolutionResult<T>
where T: RefUnwindSafe,

§

impl<T> Send for ResolutionResult<T>
where T: Sync + Send,

§

impl<T> Sync for ResolutionResult<T>
where T: Sync + Send,

§

impl<T> Unpin for ResolutionResult<T>

§

impl<T> UnwindSafe for ResolutionResult<T>
where T: RefUnwindSafe,

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

Source§

fn downcast_ref<T>(this: &Self) -> Option<&T>
where T: Any,

Attempts to downcast this to T behind reference
Source§

fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>
where T: Any,

Attempts to downcast this to T behind mutable reference
Source§

fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>
where T: Any,

Attempts to downcast this to T behind Rc pointer
Source§

fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>
where T: Any,

Attempts to downcast this to T behind Arc pointer
Source§

fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>
where T: Any,

Attempts to downcast this to T behind Box pointer
Source§

fn downcast_move<T>(this: Self) -> Option<T>
where T: Any, Self: Sized,

Attempts to downcast owned Self to T, useful only in generic context as a workaround for specialization
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, X> CoerceTo<T> for X
where T: CoerceFrom<X> + ?Sized,

Source§

fn coerce_rc_to(self: Rc<X>) -> Rc<T>

Source§

fn coerce_box_to(self: Box<X>) -> Box<T>

Source§

fn coerce_ref_to(&self) -> &T

Source§

fn coerce_mut_to(&mut self) -> &mut T

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

Source§

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

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

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