Struct rustc_trans::middle::traits::VtableImplDataUnstable [-] [+] [src]

pub struct VtableImplData<'tcx, N> {
    pub impl_def_id: DefId,
    pub substs: Substs<'tcx>,
    pub nested: VecPerParamSpace<N>,
}

Identifies a particular impl in the source, along with a set of substitutions from the impl's type/lifetime parameters. The nested vector corresponds to the nested obligations attached to the impl's type parameters.

The type parameter N indicates the type used for "nested obligations" that are required by the impl. During type check, this is Obligation, as one might expect. During trans, however, this is (), because trans only requires a shallow resolution of an impl, and nested obligations are satisfied later.

Fields

impl_def_id
substs
nested

Methods

impl<'tcx, N> VtableImplData<'tcx, N>

fn iter_nested(&self) -> Iter<N>

fn map_nested<M, F>(&self, op: F) -> VtableImplData<'tcx, M> where F: FnMut(&N) -> M

fn map_move_nested<M, F>(self, op: F) -> VtableImplData<'tcx, M> where F: FnMut(N) -> M

Trait Implementations

impl<'tcx, N> Debug for VtableImplData<'tcx, N>

fn fmt(&self, f: &mut Formatter) -> Result<(), Error>

impl<'tcx, N> Repr<'tcx> for VtableImplData<'tcx, N> where N: Repr<'tcx>

fn repr(&self, tcx: &ctxt<'tcx>) -> String

impl<'tcx, N> TypeFoldable<'tcx> for VtableImplData<'tcx, N> where N: TypeFoldable<'tcx>

fn fold_with<F>(&self, folder: &mut F) -> VtableImplData<'tcx, N> where F: TypeFolder<'tcx>

Derived Implementations

impl<'tcx, N> Eq for VtableImplData<'tcx, N> where N: Eq + Eq

impl<'tcx, N> PartialEq<VtableImplData<'tcx, N>> for VtableImplData<'tcx, N> where N: PartialEq<N> + PartialEq<N>

fn eq(&self, __arg_0: &VtableImplData<'tcx, N>) -> bool

fn ne(&self, __arg_0: &VtableImplData<'tcx, N>) -> bool

impl<'tcx, N> Clone for VtableImplData<'tcx, N> where N: Clone + Clone

fn clone(&self) -> VtableImplData<'tcx, N>

fn clone_from(&mut self, source: &Self)