naga::proc::overloads::list

Struct List

Source
pub(super) struct List {
    members: u64,
    rules: Rc<Vec<Rule>>,
}
Expand description

A simple list of overloads.

Note that this type is not quite as general as it looks, in that the implementation of most_preferred doesn’t work for arbitrary lists of overloads. See the documentation for List::rules for details.

Fields§

§members: u64

A bitmask of which elements of rules are included in the set.

§rules: Rc<Vec<Rule>>

A list of type rules that are members of the set.

These must be listed in order such that every rule in the list is always more preferred than all subsequent rules in the list. If there is no such arrangement of rules, then you cannot use List to represent the overload set.

Implementations§

Source§

impl List

Source

pub(super) fn from_rules(rules: Vec<Rule>) -> List

Source

fn members(&self) -> impl Iterator<Item = (u64, &Rule)>

Source

fn filter<F>(&self, pred: F) -> List
where F: FnMut(&Rule) -> bool,

Trait Implementations§

Source§

impl Clone for List

Source§

fn clone(&self) -> List

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 ForDebugWithTypes for &List

Source§

fn for_debug( self, types: &UniqueArena<Type>, ) -> DiagnosticDebug<(Self, &UniqueArena<Type>)>

Format this type using core::fmt::Debug. Read more
Source§

impl From<List> for AnyOverloadSet

Source§

fn from(concrete: List) -> Self

Converts to this type from the input type.
Source§

impl OverloadSet for List

Source§

fn is_empty(&self) -> bool

Return true if self is the empty set of overloads.
Source§

fn min_arguments(&self) -> usize

Return the smallest number of arguments in any type rule in the set. Read more
Source§

fn max_arguments(&self) -> usize

Return the largest number of arguments in any type rule in the set. Read more
Source§

fn arg(&self, i: usize, arg_ty: &TypeInner, types: &UniqueArena<Type>) -> Self

Find the overloads that could accept a given argument. Read more
Source§

fn concrete_only(self, types: &UniqueArena<Type>) -> Self

Limit self to overloads whose arguments are all concrete types. Read more
Source§

fn most_preferred(&self) -> Rule

Return the most preferred candidate. Read more
Source§

fn overload_list(&self, _gctx: &GlobalCtx<'_>) -> Vec<Rule>

Return a type rule for each of the overloads in self.
Source§

fn allowed_args(&self, i: usize, _gctx: &GlobalCtx<'_>) -> Vec<TypeResolution>

Return a list of the types allowed for argument i.
Source§

fn for_debug(&self, types: &UniqueArena<Type>) -> impl Debug

Return an object that can be formatted with core::fmt::Debug.

Auto Trait Implementations§

§

impl Freeze for List

§

impl RefUnwindSafe for List

§

impl !Send for List

§

impl !Sync for List

§

impl Unpin for List

§

impl UnwindSafe for List

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, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
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.