pub type ExistentialTraitRef<'tcx> = ExistentialTraitRef<TyCtxt<'tcx>>;
Aliased Type§
struct ExistentialTraitRef<'tcx> {
pub def_id: DefId,
pub args: &'tcx RawList<(), GenericArg<'tcx>>,
/* private fields */
}
Fields§
§def_id: DefId
§args: &'tcx RawList<(), GenericArg<'tcx>>
Implementations
Source§impl<I> ExistentialTraitRef<I>where
I: Interner,
impl<I> ExistentialTraitRef<I>where
I: Interner,
pub fn new_from_args( interner: I, trait_def_id: <I as Interner>::DefId, args: <I as Interner>::GenericArgs, ) -> ExistentialTraitRef<I>
pub fn new(
interner: I,
trait_def_id: <I as Interner>::DefId,
args: impl IntoIterator- >,
) -> ExistentialTraitRef<I>
pub fn erase_self_ty( interner: I, trait_ref: TraitRef<I>, ) -> ExistentialTraitRef<I>
Sourcepub fn with_self_ty(
self,
interner: I,
self_ty: <I as Interner>::Ty,
) -> TraitRef<I>
pub fn with_self_ty( self, interner: I, self_ty: <I as Interner>::Ty, ) -> TraitRef<I>
Object types don’t have a self type specified. Therefore, when
we convert the principal trait-ref into a normal trait-ref,
you must give some self type. A common choice is mk_err()
or some placeholder type.
Trait Implementations§
Source§impl<'tcx, P: PrettyPrinter<'tcx>> Print<'tcx, P> for ExistentialTraitRef<'tcx>
impl<'tcx, P: PrettyPrinter<'tcx>> Print<'tcx, P> for ExistentialTraitRef<'tcx>
Source§impl<I> Clone for ExistentialTraitRef<I>where
I: Interner,
impl<I> Clone for ExistentialTraitRef<I>where
I: Interner,
Source§fn clone(&self) -> ExistentialTraitRef<I>
fn clone(&self) -> ExistentialTraitRef<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 ExistentialTraitRef<I>where
I: Interner,
impl<I> Debug for ExistentialTraitRef<I>where
I: Interner,
Source§impl<I, __D> Decodable<__D> for ExistentialTraitRef<I>
impl<I, __D> Decodable<__D> for ExistentialTraitRef<I>
fn decode(__decoder: &mut __D) -> ExistentialTraitRef<I>
Source§impl<I> Display for ExistentialTraitRef<I>where
I: Interner,
impl<I> Display for ExistentialTraitRef<I>where
I: Interner,
Source§impl<I, __E> Encodable<__E> for ExistentialTraitRef<I>
impl<I, __E> Encodable<__E> for ExistentialTraitRef<I>
Source§impl<I> Hash for ExistentialTraitRef<I>where
I: Interner,
impl<I> Hash for ExistentialTraitRef<I>where
I: Interner,
Source§impl<I, __CTX> HashStable<__CTX> for ExistentialTraitRef<I>where
I: Interner,
<I as Interner>::DefId: HashStable<__CTX>,
<I as Interner>::GenericArgs: HashStable<__CTX>,
impl<I, __CTX> HashStable<__CTX> for ExistentialTraitRef<I>where
I: Interner,
<I as Interner>::DefId: HashStable<__CTX>,
<I as Interner>::GenericArgs: HashStable<__CTX>,
fn hash_stable( &self, __hcx: &mut __CTX, __hasher: &mut StableHasher<SipHasher128>, )
Source§impl<I> IntoDiagArg for ExistentialTraitRef<I>where
I: Interner,
impl<I> IntoDiagArg for ExistentialTraitRef<I>where
I: Interner,
fn into_diag_arg(self) -> DiagArgValue
Source§impl<I, J> Lift<J> for ExistentialTraitRef<I>
impl<I, J> Lift<J> for ExistentialTraitRef<I>
type Lifted = ExistentialTraitRef<J>
fn lift_to_interner(self, interner: J) -> Option<ExistentialTraitRef<J>>
Source§impl<I> PartialEq for ExistentialTraitRef<I>where
I: Interner,
impl<I> PartialEq for ExistentialTraitRef<I>where
I: Interner,
Source§impl<I> Relate<I> for ExistentialTraitRef<I>where
I: Interner,
impl<I> Relate<I> for ExistentialTraitRef<I>where
I: Interner,
fn relate<R>(
relation: &mut R,
a: ExistentialTraitRef<I>,
b: ExistentialTraitRef<I>,
) -> Result<ExistentialTraitRef<I>, TypeError<I>>where
R: TypeRelation<I>,
Source§impl<I> TypeFoldable<I> for ExistentialTraitRef<I>where
I: Interner,
<I as Interner>::DefId: TypeFoldable<I>,
<I as Interner>::GenericArgs: TypeFoldable<I>,
impl<I> TypeFoldable<I> for ExistentialTraitRef<I>where
I: Interner,
<I as Interner>::DefId: TypeFoldable<I>,
<I as Interner>::GenericArgs: TypeFoldable<I>,
Source§fn try_fold_with<__F>(
self,
__folder: &mut __F,
) -> Result<ExistentialTraitRef<I>, <__F as FallibleTypeFolder<I>>::Error>where
__F: FallibleTypeFolder<I>,
fn try_fold_with<__F>(
self,
__folder: &mut __F,
) -> Result<ExistentialTraitRef<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 ExistentialTraitRef<I>where
I: Interner,
<I as Interner>::DefId: TypeVisitable<I>,
<I as Interner>::GenericArgs: TypeVisitable<I>,
impl<I> TypeVisitable<I> for ExistentialTraitRef<I>where
I: Interner,
<I as Interner>::DefId: TypeVisitable<I>,
<I as Interner>::GenericArgs: 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 ExistentialTraitRef<I>where
I: Interner,
impl<I> Eq for ExistentialTraitRef<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: 16 bytes