pub type ExistentialProjection<'tcx> = ExistentialProjection<TyCtxt<'tcx>>;
Aliased Type§
struct ExistentialProjection<'tcx> {
pub def_id: DefId,
pub args: &'tcx RawList<(), GenericArg<'tcx>>,
pub term: Term<'tcx>,
/* private fields */
}
Fields§
§def_id: DefId
§args: &'tcx RawList<(), GenericArg<'tcx>>
§term: Term<'tcx>
Implementations
Source§impl<I> ExistentialProjection<I>where
I: Interner,
impl<I> ExistentialProjection<I>where
I: Interner,
pub fn new_from_args( interner: I, def_id: <I as Interner>::DefId, args: <I as Interner>::GenericArgs, term: <I as Interner>::Term, ) -> ExistentialProjection<I>
pub fn new(
interner: I,
def_id: <I as Interner>::DefId,
args: impl IntoIterator- >,
term: <I as Interner>::Term,
) -> ExistentialProjection<I>
Sourcepub fn trait_ref(&self, interner: I) -> ExistentialTraitRef<I>
pub fn trait_ref(&self, interner: I) -> ExistentialTraitRef<I>
Extracts the underlying existential trait reference from this projection.
For example, if this is a projection of exists T. <T as Iterator>::Item == X
,
then this function would return an exists T. T: Iterator
existential trait
reference.
pub fn with_self_ty( &self, interner: I, self_ty: <I as Interner>::Ty, ) -> ProjectionPredicate<I>
pub fn erase_self_ty( interner: I, projection_predicate: ProjectionPredicate<I>, ) -> ExistentialProjection<I>
Trait Implementations§
Source§impl<'tcx, P: PrettyPrinter<'tcx>> Print<'tcx, P> for ExistentialProjection<'tcx>
impl<'tcx, P: PrettyPrinter<'tcx>> Print<'tcx, P> for ExistentialProjection<'tcx>
Source§impl<I> Clone for ExistentialProjection<I>where
I: Interner,
impl<I> Clone for ExistentialProjection<I>where
I: Interner,
Source§fn clone(&self) -> ExistentialProjection<I>
fn clone(&self) -> ExistentialProjection<I>
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<I> Debug for ExistentialProjection<I>where
I: Interner,
impl<I> Debug for ExistentialProjection<I>where
I: Interner,
Source§impl<I, __D> Decodable<__D> for ExistentialProjection<I>
impl<I, __D> Decodable<__D> for ExistentialProjection<I>
fn decode(__decoder: &mut __D) -> ExistentialProjection<I>
Source§impl<I> Display for ExistentialProjection<I>where
I: Interner,
impl<I> Display for ExistentialProjection<I>where
I: Interner,
Source§impl<I, __E> Encodable<__E> for ExistentialProjection<I>
impl<I, __E> Encodable<__E> for ExistentialProjection<I>
Source§impl<I> Hash for ExistentialProjection<I>where
I: Interner,
impl<I> Hash for ExistentialProjection<I>where
I: Interner,
Source§impl<I, __CTX> HashStable<__CTX> for ExistentialProjection<I>where
I: Interner,
<I as Interner>::DefId: HashStable<__CTX>,
<I as Interner>::GenericArgs: HashStable<__CTX>,
<I as Interner>::Term: HashStable<__CTX>,
impl<I, __CTX> HashStable<__CTX> for ExistentialProjection<I>where
I: Interner,
<I as Interner>::DefId: HashStable<__CTX>,
<I as Interner>::GenericArgs: HashStable<__CTX>,
<I as Interner>::Term: HashStable<__CTX>,
fn hash_stable( &self, __hcx: &mut __CTX, __hasher: &mut StableHasher<SipHasher128>, )
Source§impl<I, J> Lift<J> for ExistentialProjection<I>
impl<I, J> Lift<J> for ExistentialProjection<I>
type Lifted = ExistentialProjection<J>
fn lift_to_interner(self, interner: J) -> Option<ExistentialProjection<J>>
Source§impl<I> PartialEq for ExistentialProjection<I>where
I: Interner,
impl<I> PartialEq for ExistentialProjection<I>where
I: Interner,
Source§impl<I> Relate<I> for ExistentialProjection<I>where
I: Interner,
impl<I> Relate<I> for ExistentialProjection<I>where
I: Interner,
fn relate<R>(
relation: &mut R,
a: ExistentialProjection<I>,
b: ExistentialProjection<I>,
) -> Result<ExistentialProjection<I>, TypeError<I>>where
R: TypeRelation<I>,
Source§impl<I> TypeFoldable<I> for ExistentialProjection<I>where
I: Interner,
<I as Interner>::DefId: TypeFoldable<I>,
<I as Interner>::GenericArgs: TypeFoldable<I>,
<I as Interner>::Term: TypeFoldable<I>,
impl<I> TypeFoldable<I> for ExistentialProjection<I>where
I: Interner,
<I as Interner>::DefId: TypeFoldable<I>,
<I as Interner>::GenericArgs: TypeFoldable<I>,
<I as Interner>::Term: TypeFoldable<I>,
Source§fn try_fold_with<__F>(
self,
__folder: &mut __F,
) -> Result<ExistentialProjection<I>, <__F as FallibleTypeFolder<I>>::Error>where
__F: FallibleTypeFolder<I>,
fn try_fold_with<__F>(
self,
__folder: &mut __F,
) -> Result<ExistentialProjection<I>, <__F as FallibleTypeFolder<I>>::Error>where
__F: FallibleTypeFolder<I>,
Source§fn fold_with<F>(self, folder: &mut F) -> Selfwhere
F: TypeFolder<I>,
fn fold_with<F>(self, folder: &mut F) -> Selfwhere
F: TypeFolder<I>,
A convenient alternative to
try_fold_with
for use with infallible
folders. Do not override this method, to ensure coherence with
try_fold_with
.Source§impl<I> TypeVisitable<I> for ExistentialProjection<I>where
I: Interner,
<I as Interner>::DefId: TypeVisitable<I>,
<I as Interner>::GenericArgs: TypeVisitable<I>,
<I as Interner>::Term: TypeVisitable<I>,
impl<I> TypeVisitable<I> for ExistentialProjection<I>where
I: Interner,
<I as Interner>::DefId: TypeVisitable<I>,
<I as Interner>::GenericArgs: TypeVisitable<I>,
<I as Interner>::Term: TypeVisitable<I>,
Source§fn visit_with<__V>(
&self,
__visitor: &mut __V,
) -> <__V as TypeVisitor<I>>::Resultwhere
__V: TypeVisitor<I>,
fn visit_with<__V>(
&self,
__visitor: &mut __V,
) -> <__V as TypeVisitor<I>>::Resultwhere
__V: TypeVisitor<I>,
impl<I> Copy for ExistentialProjection<I>where
I: Interner,
impl<I> Eq for ExistentialProjection<I>where
I: Interner,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 24 bytes