[−][src]Struct chalk_ir::TraitRef
A trait reference describes the relationship between a type and a trait. This can be used in two forms:
P0: Trait<P1..Pn>(e.g.i32: Copy), which mentions that the type implements the trait.<P0 as Trait<P1..Pn>>(e.g.i32 as Copy), which casts the type to that specific trait.
Fields
trait_id: TraitId<I>The trait id.
substitution: Substitution<I>The substitution, containing both the Self type and the parameters.
Implementations
impl<I: Interner> TraitRef<I>[src]
pub fn with_as(&self) -> impl Debug + '_[src]
Returns a "Debuggable" type that prints like P0 as Trait<P1..>.
pub fn with_colon(&self) -> impl Debug + '_[src]
Returns a "Debuggable" type that prints like P0: Trait<P1..>.
impl<I: Interner> TraitRef<I>[src]
pub fn type_parameters<'a>(
&'a self,
interner: &'a I
) -> impl Iterator<Item = Ty<I>> + 'a[src]
&'a self,
interner: &'a I
) -> impl Iterator<Item = Ty<I>> + 'a
Gets all type parameters in this trait ref, including Self.
pub fn self_type_parameter(&self, interner: &I) -> Ty<I>[src]
Gets the type parameters of the Self type in this trait ref.
pub fn from_env(self) -> FromEnv<I>[src]
Construct a FromEnv using this trait ref.
pub fn well_formed(self) -> WellFormed<I>[src]
Construct a WellFormed using this trait ref.
Trait Implementations
impl<I: Interner> CastTo<TraitRef<I>> for TraitRef<I>[src]
impl<I: Interner> CastTo<WhereClause<I>> for TraitRef<I>[src]
fn cast_to(self, _interner: &I) -> WhereClause<I>[src]
impl<I: Clone + Interner> Clone for TraitRef<I>[src]
impl<I: Interner> Copy for TraitRef<I> where
I::InternedSubstitution: Copy, [src]
I::InternedSubstitution: Copy,
impl<I: Interner> Debug for TraitRef<I>[src]
impl<I: Eq + Interner> Eq for TraitRef<I>[src]
impl<I: Interner, _TI> Fold<I, _TI> for TraitRef<I> where
_TI: TargetInterner<I>, [src]
_TI: TargetInterner<I>,
type Result = TraitRef<_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 TraitRef<I>[src]
type Interner = I
The interner associated with the type.
impl<I: Hash + Interner> Hash for TraitRef<I>[src]
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: PartialEq + Interner> PartialEq<TraitRef<I>> for TraitRef<I>[src]
impl<I: Interner> StructuralEq for TraitRef<I>[src]
impl<I: Interner> StructuralPartialEq for TraitRef<I>[src]
impl<I: Interner> Visit<I> for TraitRef<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 TraitRef<I>[src]
Auto Trait Implementations
impl<I> RefUnwindSafe for TraitRef<I> where
<I as Interner>::DefId: RefUnwindSafe,
<I as Interner>::InternedSubstitution: RefUnwindSafe,
<I as Interner>::DefId: RefUnwindSafe,
<I as Interner>::InternedSubstitution: RefUnwindSafe,
impl<I> Send for TraitRef<I> where
<I as Interner>::DefId: Send,
<I as Interner>::InternedSubstitution: Send,
<I as Interner>::DefId: Send,
<I as Interner>::InternedSubstitution: Send,
impl<I> Sync for TraitRef<I> where
<I as Interner>::DefId: Sync,
<I as Interner>::InternedSubstitution: Sync,
<I as Interner>::DefId: Sync,
<I as Interner>::InternedSubstitution: Sync,
impl<I> Unpin for TraitRef<I> where
<I as Interner>::DefId: Unpin,
<I as Interner>::InternedSubstitution: Unpin,
<I as Interner>::DefId: Unpin,
<I as Interner>::InternedSubstitution: Unpin,
impl<I> UnwindSafe for TraitRef<I> where
<I as Interner>::DefId: UnwindSafe,
<I as Interner>::InternedSubstitution: UnwindSafe,
<I as Interner>::DefId: UnwindSafe,
<I as Interner>::InternedSubstitution: 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> CastTo<DomainGoal<I>> for T where
I: Interner,
T: CastTo<WhereClause<I>>, [src]
I: Interner,
T: CastTo<WhereClause<I>>,
fn cast_to(Self, &I) -> DomainGoal<I>[src]
impl<T, I> CastTo<Goal<I>> for T where
I: Interner,
T: CastTo<DomainGoal<I>>, [src]
I: Interner,
T: CastTo<DomainGoal<I>>,
impl<T, I> CastTo<ProgramClause<I>> for T where
I: Interner,
T: CastTo<DomainGoal<I>>, [src]
I: Interner,
T: CastTo<DomainGoal<I>>,
fn cast_to(Self, &I) -> ProgramClause<I>[src]
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>,