Struct rustdoc::core::DocContext [−][src]
Fields
tcx: TyCtxt<'tcx>resolver: Rc<RefCell<BoxedResolver>>Name resolver. Used for intra-doc links.
The Rc<RefCell<...>> wrapping is needed because that is what’s returned by
Queries::expansion().
param_env: ParamEnv<'tcx>Used for normalization.
Most of this logic is copied from rustc_lint::late.
external_traits: Rc<RefCell<FxHashMap<DefId, TraitWithExtraInfo>>>Later on moved through clean::Crate into cache
active_extern_traits: FxHashSet<DefId>Used while populating external_traits to ensure we don’t process the same trait twice at
the same time.
ty_substs: FxHashMap<DefId, Type>Table DefId of type parameter -> substituted type
lt_substs: FxHashMap<DefId, Lifetime>Table DefId of lifetime parameter -> substituted lifetime
ct_substs: FxHashMap<DefId, Constant>Table DefId of const parameter -> substituted const
impl_trait_bounds: FxHashMap<ImplTraitParam, Vec<GenericBound>>Table synthetic type parameter for impl Trait in argument position -> bounds
fake_def_ids: FxHashMap<CrateNum, DefIndex>generated_synthetics: FxHashSet<(Ty<'tcx>, DefId)>Auto-trait or blanket impls processed so far, as (self_ty, trait_def_id).
auto_traits: Vec<DefId>render_options: RenderOptionsThe options given to rustdoc that could be relevant to a pass.
module_trait_cache: FxHashMap<DefId, FxHashSet<DefId>>The traits in scope for a given module.
See collect_intra_doc_links::traits_implemented_by for more details.
map<module, set<trait>>
cache: CacheThis same cache is used throughout rustdoc, including in crate::html::render.
inlined: FxHashSet<DefId>Used by clean::inline to tell if an item has already been inlined.
output_format: OutputFormatUsed by calculate_doc_coverage.
Implementations
impl<'tcx> DocContext<'tcx>[src]
pub(crate) fn sess(&self) -> &'tcx Session[src]
pub(crate) fn with_param_env<T, F: FnOnce(&mut Self) -> T>(
&mut self,
def_id: DefId,
f: F
) -> T[src]
&mut self,
def_id: DefId,
f: F
) -> T
pub(crate) fn enter_resolver<F, R>(&self, f: F) -> R where
F: FnOnce(&mut Resolver<'_>) -> R, [src]
F: FnOnce(&mut Resolver<'_>) -> R,
pub(crate) fn enter_alias<F, R>(
&mut self,
ty_substs: FxHashMap<DefId, Type>,
lt_substs: FxHashMap<DefId, Lifetime>,
ct_substs: FxHashMap<DefId, Constant>,
f: F
) -> R where
F: FnOnce(&mut Self) -> R, [src]
&mut self,
ty_substs: FxHashMap<DefId, Type>,
lt_substs: FxHashMap<DefId, Lifetime>,
ct_substs: FxHashMap<DefId, Constant>,
f: F
) -> R where
F: FnOnce(&mut Self) -> R,
Call the closure with the given parameters set as the substitutions for a type alias’ RHS.
pub(crate) fn next_def_id(&mut self, crate_num: CrateNum) -> DefId[src]
Create a new “fake” DefId.
This is an ugly hack, but it’s the simplest way to handle synthetic impls without greatly
refactoring either rustdoc or rustc_middle. In particular, allowing new DefIds
to be registered after the AST is constructed would require storing the DefId mapping
in a RefCell, decreasing the performance for normal compilation for very little gain.
Instead, we construct “fake” DefIds, which start immediately after the last DefId.
In the Debug impl for clean::Item, we explicitly check for fake DefIds,
as we’ll end up with a panic if we use the DefId Debug impl for fake DefIds.
pub(crate) fn as_local_hir_id(tcx: TyCtxt<'_>, def_id: DefId) -> Option<HirId>[src]
Like hir().local_def_id_to_hir_id(), but skips calling it on fake DefIds.
(This avoids a slice-index-out-of-bounds panic.)
Auto Trait Implementations
impl<'tcx> !RefUnwindSafe for DocContext<'tcx>
impl<'tcx> !Send for DocContext<'tcx>
impl<'tcx> !Sync for DocContext<'tcx>
impl<'tcx> Unpin for DocContext<'tcx>
impl<'tcx> !UnwindSafe for DocContext<'tcx>
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,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T> Instrument for T[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>[src]
pub fn in_current_span(self) -> Instrumented<Self>[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
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.
pub 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.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,