[−][src]Struct chalk_ir::GenericArg
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]
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, TI: TargetInterner<I>> Fold<I, TI> for GenericArg<I>[src]
type Result = GenericArg<TI>
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, TI>,
outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
I: 'i,
TI: 'i, [src]
&self,
folder: &mut dyn Folder<'i, I, TI>,
outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
I: 'i,
TI: '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]
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]fn max(self, other: Self) -> Self1.21.0[src]
#[must_use]fn min(self, other: Self) -> Self1.21.0[src]
#[must_use]fn clamp(self, min: Self, max: Self) -> Self[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]
fn lt(&self, other: &GenericArg<I>) -> bool[src]
fn le(&self, other: &GenericArg<I>) -> bool[src]
fn gt(&self, other: &GenericArg<I>) -> bool[src]
fn ge(&self, other: &GenericArg<I>) -> bool[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, R: VisitResult>(
&self,
visitor: &mut dyn Visitor<'i, I, Result = R>,
outer_binder: DebruijnIndex
) -> R where
I: 'i, [src]
&self,
visitor: &mut dyn Visitor<'i, I, Result = R>,
outer_binder: DebruijnIndex
) -> R 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,
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
I: Interner,
T: Zip<I> + HasInterner<Interner = I> + ?Sized, [src]
I: Interner,
T: Zip<I> + HasInterner<Interner = I> + ?Sized,
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
I: Interner,
T: Fold<I, I>, [src]
I: Interner,
T: Fold<I, I>,
fn shifted_in(&Self, &I) -> <T as Fold<I, I>>::Result[src]
fn shifted_in_from(&Self, &I, DebruijnIndex) -> <T as Fold<I, I>>::Result[src]
fn shifted_out_to(
&Self,
&I,
DebruijnIndex
) -> Result<<T as Fold<I, I>>::Result, NoSolution>[src]
&Self,
&I,
DebruijnIndex
) -> Result<<T as Fold<I, I>>::Result, NoSolution>
fn shifted_out(&Self, &I) -> Result<<T as Fold<I, I>>::Result, NoSolution>[src]
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T[src]
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.
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.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<T, I> VisitExt<I> for T where
I: Interner,
T: Visit<I>, [src]
I: Interner,
T: Visit<I>,