Struct chalk_ir::GenericArg [−][src]
pub struct GenericArg<I: Interner> { /* fields omitted */ }
A generic argument, see GenericArgData for more information.
Implementations
impl<I: Interner> GenericArg<I>[src]
pub fn new(interner: &I, data: GenericArgData<I>) -> Self[src]
Constructs a generic argument using GenericArgData.
pub fn interned(&self) -> &I::InternedGenericArg[src]
Gets the interned value.
pub fn data(&self, interner: &I) -> &GenericArgData<I>[src]
Gets the underlying data.
pub fn assert_ty_ref(&self, interner: &I) -> &Ty<I>[src]
Asserts that this is a type argument.
pub fn assert_lifetime_ref(&self, interner: &I) -> &Lifetime<I>[src]
Asserts that this is a lifetime argument.
pub fn assert_const_ref(&self, interner: &I) -> &Const<I>[src]
Asserts that this is a constant argument.
pub fn is_ty(&self, interner: &I) -> bool[src]
Checks whether the generic argument is a type.
pub fn ty(&self, interner: &I) -> Option<&Ty<I>>[src]
Returns the type if it is one, None otherwise.
pub fn lifetime(&self, interner: &I) -> Option<&Lifetime<I>>[src]
Returns the lifetime if it is one, None otherwise.
pub fn constant(&self, interner: &I) -> Option<&Const<I>>[src]
Returns the constant if it is one, None otherwise.
Trait Implementations
impl<I: Interner> CastTo<GenericArg<I>> for Ty<I>[src]
fn cast_to(self, interner: &I) -> GenericArg<I>[src]
impl<I: Interner> CastTo<GenericArg<I>> for Lifetime<I>[src]
fn cast_to(self, interner: &I) -> GenericArg<I>[src]
impl<I: Interner> CastTo<GenericArg<I>> for Const<I>[src]
fn cast_to(self, interner: &I) -> GenericArg<I>[src]
impl<I: Interner> CastTo<GenericArg<I>> for GenericArg<I>[src]
fn cast_to(self, _interner: &I) -> GenericArg<I>[src]
impl<I: Clone + Interner> Clone for GenericArg<I> where
I::InternedGenericArg: Clone, [src]
I::InternedGenericArg: Clone,
fn clone(&self) -> GenericArg<I>[src]
pub fn clone_from(&mut self, source: &Self)1.0.0[src]
impl<I: Copy + Interner> Copy for GenericArg<I> where
I::InternedGenericArg: Copy, [src]
I::InternedGenericArg: Copy,
impl<I: Interner> Debug for GenericArg<I>[src]
impl<I: Eq + Interner> Eq for GenericArg<I> where
I::InternedGenericArg: Eq, [src]
I::InternedGenericArg: Eq,
impl<I: Interner> Fold<I> for GenericArg<I>[src]
type Result = GenericArg<I>
The type of value that will be produced once folding is done.
Typically this is Self, unless Self contains borrowed
values, in which case owned values are produced (for example,
one can fold over a &T value where T: Fold, in which case
you get back a T, not a &T). Read more
fn fold_with<'i>(
self,
folder: &mut dyn Folder<'i, I>,
outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
I: 'i, [src]
self,
folder: &mut dyn Folder<'i, I>,
outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
I: 'i,
impl<I: Interner> HasInterner for GenericArg<I>[src]
type Interner = I
The interner associated with the type.
impl<I: Hash + Interner> Hash for GenericArg<I> where
I::InternedGenericArg: Hash, [src]
I::InternedGenericArg: Hash,
fn hash<__H: Hasher>(&self, state: &mut __H)[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher, 1.3.0[src]
H: Hasher,
impl<I: Ord + Interner> Ord for GenericArg<I> where
I::InternedGenericArg: Ord, [src]
I::InternedGenericArg: Ord,
fn cmp(&self, other: &GenericArg<I>) -> Ordering[src]
#[must_use]pub fn max(self, other: Self) -> Self1.21.0[src]
#[must_use]pub fn min(self, other: Self) -> Self1.21.0[src]
#[must_use]pub fn clamp(self, min: Self, max: Self) -> Self1.50.0[src]
impl<I: PartialEq + Interner> PartialEq<GenericArg<I>> for GenericArg<I> where
I::InternedGenericArg: PartialEq, [src]
I::InternedGenericArg: PartialEq,
fn eq(&self, other: &GenericArg<I>) -> bool[src]
fn ne(&self, other: &GenericArg<I>) -> bool[src]
impl<I: PartialOrd + Interner> PartialOrd<GenericArg<I>> for GenericArg<I> where
I::InternedGenericArg: PartialOrd, [src]
I::InternedGenericArg: PartialOrd,
fn partial_cmp(&self, other: &GenericArg<I>) -> Option<Ordering>[src]
#[must_use]pub fn lt(&self, other: &Rhs) -> bool1.0.0[src]
#[must_use]pub fn le(&self, other: &Rhs) -> bool1.0.0[src]
#[must_use]pub fn gt(&self, other: &Rhs) -> bool1.0.0[src]
#[must_use]pub fn ge(&self, other: &Rhs) -> bool1.0.0[src]
impl<I: Interner> StructuralEq for GenericArg<I>[src]
impl<I: Interner> StructuralPartialEq for GenericArg<I>[src]
impl<I: Interner> Visit<I> for GenericArg<I>[src]
fn visit_with<'i, B>(
&self,
visitor: &mut dyn Visitor<'i, I, BreakTy = B>,
outer_binder: DebruijnIndex
) -> ControlFlow<B> where
I: 'i, [src]
&self,
visitor: &mut dyn Visitor<'i, I, BreakTy = B>,
outer_binder: DebruijnIndex
) -> ControlFlow<B> where
I: 'i,
impl<I: Interner> Zip<I> for GenericArg<I>[src]
Auto Trait Implementations
impl<I> RefUnwindSafe for GenericArg<I> where
<I as Interner>::InternedGenericArg: RefUnwindSafe,
<I as Interner>::InternedGenericArg: RefUnwindSafe,
impl<I> Send for GenericArg<I> where
<I as Interner>::InternedGenericArg: Send,
<I as Interner>::InternedGenericArg: Send,
impl<I> Sync for GenericArg<I> where
<I as Interner>::InternedGenericArg: Sync,
<I as Interner>::InternedGenericArg: Sync,
impl<I> Unpin for GenericArg<I> where
<I as Interner>::InternedGenericArg: Unpin,
<I as Interner>::InternedGenericArg: Unpin,
impl<I> UnwindSafe for GenericArg<I> where
<I as Interner>::InternedGenericArg: UnwindSafe,
<I as Interner>::InternedGenericArg: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> Cast for T[src]
fn cast<U>(self, interner: &U::Interner) -> U where
Self: CastTo<U>,
U: HasInterner, [src]
Self: CastTo<U>,
U: HasInterner,
impl<T, I> CouldMatch<T> for T where
T: Zip<I> + HasInterner<Interner = I> + ?Sized,
I: Interner, [src]
T: Zip<I> + HasInterner<Interner = I> + ?Sized,
I: Interner,
pub fn could_match(&Self, &I, &dyn UnificationDatabase<I>, &T) -> bool[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T, I> Shift<I> for T where
T: Fold<I>,
I: Interner, [src]
T: Fold<I>,
I: Interner,
pub fn shifted_in(Self, &I) -> <T as Fold<I>>::Result[src]
pub fn shifted_in_from(Self, &I, DebruijnIndex) -> <T as Fold<I>>::Result[src]
pub fn shifted_out_to(
Self,
&I,
DebruijnIndex
) -> Result<<T as Fold<I>>::Result, NoSolution>[src]
Self,
&I,
DebruijnIndex
) -> Result<<T as Fold<I>>::Result, NoSolution>
pub fn shifted_out(Self, &I) -> Result<<T as Fold<I>>::Result, NoSolution>[src]
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn clone_into(&self, target: &mut T)[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<T, I> VisitExt<I> for T where
T: Visit<I>,
I: Interner, [src]
T: Visit<I>,
I: Interner,