[−][src]Enum chalk_ir::FromEnv
Checks whether a type or trait ref can be derived from the contents of the environment.
Variants
Trait(TraitRef<I>)A predicate which enables deriving everything which should be true if we know that
some trait ref is well-formed. For example given the above trait definitions, we can use
FromEnv(T: Copy) to derive that T: Clone, like in:
forall<T> {
if (FromEnv(T: Copy)) {
T: Clone
}
}
Ty(Ty<I>)A predicate which enables deriving everything which should be true if we know that
some type is well-formed. For example given the above type definition, we can use
FromEnv(Set<K>) to derive that K: Hash, like in:
forall<K> {
if (FromEnv(Set<K>)) {
K: Hash
}
}
Trait Implementations
impl<I: Interner> CastTo<DomainGoal<I>> for FromEnv<I>[src]
fn cast_to(self, _interner: &I) -> DomainGoal<I>[src]
impl<I: Clone + Interner> Clone for FromEnv<I>[src]
impl<I: Interner> Copy for FromEnv<I> where
I::InternedType: Copy,
I::InternedSubstitution: Copy, [src]
I::InternedType: Copy,
I::InternedSubstitution: Copy,
impl<I: Interner> Debug for FromEnv<I>[src]
impl<I: Eq + Interner> Eq for FromEnv<I>[src]
impl<I: Interner, _TI> Fold<I, _TI> for FromEnv<I> where
_TI: TargetInterner<I>, [src]
_TI: TargetInterner<I>,
type Result = FromEnv<_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 FromEnv<I>[src]
type Interner = I
The interner associated with the type.
impl<I: Hash + Interner> Hash for FromEnv<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<FromEnv<I>> for FromEnv<I>[src]
impl<I: Interner> StructuralEq for FromEnv<I>[src]
impl<I: Interner> StructuralPartialEq for FromEnv<I>[src]
impl<I: Interner> Visit<I> for FromEnv<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 FromEnv<I>[src]
Auto Trait Implementations
impl<I> RefUnwindSafe for FromEnv<I> where
<I as Interner>::DefId: RefUnwindSafe,
<I as Interner>::InternedSubstitution: RefUnwindSafe,
<I as Interner>::InternedType: RefUnwindSafe,
<I as Interner>::DefId: RefUnwindSafe,
<I as Interner>::InternedSubstitution: RefUnwindSafe,
<I as Interner>::InternedType: RefUnwindSafe,
impl<I> Send for FromEnv<I> where
<I as Interner>::DefId: Send,
<I as Interner>::InternedSubstitution: Send,
<I as Interner>::InternedType: Send,
<I as Interner>::DefId: Send,
<I as Interner>::InternedSubstitution: Send,
<I as Interner>::InternedType: Send,
impl<I> Sync for FromEnv<I> where
<I as Interner>::DefId: Sync,
<I as Interner>::InternedSubstitution: Sync,
<I as Interner>::InternedType: Sync,
<I as Interner>::DefId: Sync,
<I as Interner>::InternedSubstitution: Sync,
<I as Interner>::InternedType: Sync,
impl<I> Unpin for FromEnv<I> where
<I as Interner>::DefId: Unpin,
<I as Interner>::InternedSubstitution: Unpin,
<I as Interner>::InternedType: Unpin,
<I as Interner>::DefId: Unpin,
<I as Interner>::InternedSubstitution: Unpin,
<I as Interner>::InternedType: Unpin,
impl<I> UnwindSafe for FromEnv<I> where
<I as Interner>::DefId: UnwindSafe,
<I as Interner>::InternedSubstitution: UnwindSafe,
<I as Interner>::InternedType: UnwindSafe,
<I as Interner>::DefId: UnwindSafe,
<I as Interner>::InternedSubstitution: UnwindSafe,
<I as Interner>::InternedType: 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>,