Skip to main content

Module vtable

Module vtable 

Source

Re-exportsΒ§

use std::fmt::Debug; πŸ”’
use std::fmt::Debug; πŸ”’
use std::ops::ControlFlow; πŸ”’
use rustc_hir::def_id::DefId; πŸ”’
use rustc_infer::traits::util::PredicateSet; πŸ”’
use rustc_middle::query::Providers; πŸ”’
use rustc_middle::ty; πŸ”’
use rustc_middle::ty::GenericArgs; πŸ”’
use rustc_middle::ty::GenericParamDefKind; πŸ”’
use rustc_middle::ty::Ty; πŸ”’
use rustc_middle::ty::TyCtxt; πŸ”’
use rustc_middle::ty::TypeVisitableExt; πŸ”’
use rustc_middle::ty::Unnormalized; πŸ”’
use rustc_middle::ty::Upcast; πŸ”’
use rustc_middle::ty::VtblEntry; πŸ”’
use rustc_span::DUMMY_SP; πŸ”’
use rustc_span::bug; πŸ”’
use smallvec::SmallVec; πŸ”’
use smallvec::smallvec; πŸ”’
use tracing::debug; πŸ”’
use crate::traits::is_vtable_safe_method; πŸ”’

EnumsΒ§

VtblSegment

FunctionsΒ§

first_method_vtable_slot πŸ”’
has_own_existential_vtable_entries πŸ”’
maybe_iter πŸ”’
Turns option of iterator into an iterator (this is just flatten)
own_existential_vtable_entries πŸ”’
own_existential_vtable_entries_iter πŸ”’
prepare_vtable_segments
Prepare the segments for a vtable
prepare_vtable_segments_inner πŸ”’
Helper for prepare_vtable_segments that returns ControlFlow, such that we can use ? in the body.
provide πŸ”’
supertrait_vtable_slot πŸ”’
Given a dyn Subtrait and dyn Supertrait trait object, find the slot of the trait vptr in the subtrait’s vtable.
vtable_entries πŸ”’
Given a trait trait_ref, iterates the vtable entries that come from trait_ref, including its supertraits.