Struct rustdoc::passes::collect_intra_doc_links::LinkCollector
source · [−]struct LinkCollector<'a, 'tcx> {
cx: &'a mut DocContext<'tcx>,
mod_ids: Vec<DefId>,
visited_links: FxHashMap<ResolutionInfo, Option<CachedLink>>,
}Fields
cx: &'a mut DocContext<'tcx>mod_ids: Vec<DefId>A stack of modules used to decide what scope to resolve in.
The last module will be used if the parent scope of the current item is unknown.
visited_links: FxHashMap<ResolutionInfo, Option<CachedLink>>Cache the resolved links so we can avoid resolving (and emitting errors for) the same link.
The link will be None if it could not be resolved (i.e. the error was cached).
Implementations
sourceimpl<'a, 'tcx> LinkCollector<'a, 'tcx>
impl<'a, 'tcx> LinkCollector<'a, 'tcx>
sourcefn variant_field<'path>(
&self,
path_str: &'path str,
module_id: DefId
) -> Result<(Res, Option<ItemFragment>), ErrorKind<'path>>
fn variant_field<'path>(
&self,
path_str: &'path str,
module_id: DefId
) -> Result<(Res, Option<ItemFragment>), ErrorKind<'path>>
Given a full link, parse it as an enum struct variant.
In particular, this will return an error whenever there aren’t three full path segments left in the link.
sourcefn resolve_primitive_associated_item(
&self,
prim_ty: PrimitiveType,
ns: Namespace,
item_name: Symbol
) -> Option<(Res, ItemFragment)>
fn resolve_primitive_associated_item(
&self,
prim_ty: PrimitiveType,
ns: Namespace,
item_name: Symbol
) -> Option<(Res, ItemFragment)>
Given a primitive type, try to resolve an associated item.
sourcefn resolve_macro(
&self,
path_str: &'a str,
module_id: DefId
) -> Result<Res, ResolutionFailure<'a>>
fn resolve_macro(
&self,
path_str: &'a str,
module_id: DefId
) -> Result<Res, ResolutionFailure<'a>>
Resolves a string as a macro.
FIXME(jynelson): Can this be unified with resolve()?
sourcefn resolve_path(
&self,
path_str: &str,
ns: Namespace,
module_id: DefId
) -> Option<Res>
fn resolve_path(
&self,
path_str: &str,
ns: Namespace,
module_id: DefId
) -> Option<Res>
Convenience wrapper around resolve_str_path_error.
This also handles resolving true and false as booleans.
NOTE: resolve_str_path_error knows only about paths, not about types.
Associated items will never be resolved by this function.
sourcefn resolve<'path>(
&mut self,
path_str: &'path str,
ns: Namespace,
module_id: DefId,
user_fragment: &Option<String>
) -> Result<(Res, Option<UrlFragment>), ErrorKind<'path>>
fn resolve<'path>(
&mut self,
path_str: &'path str,
ns: Namespace,
module_id: DefId,
user_fragment: &Option<String>
) -> Result<(Res, Option<UrlFragment>), ErrorKind<'path>>
Resolves a string as a path within a particular namespace. Returns an optional URL fragment in the case of variants and methods.
fn resolve_inner<'path>(
&mut self,
path_str: &'path str,
ns: Namespace,
module_id: DefId
) -> Result<(Res, Option<ItemFragment>), ErrorKind<'path>>
sourcefn def_id_to_res(&self, ty_id: DefId) -> Option<Res>
fn def_id_to_res(&self, ty_id: DefId) -> Option<Res>
Convert a DefId to a Res, where possible.
This is used for resolving type aliases.
sourcefn primitive_type_to_ty(&mut self, prim: PrimitiveType) -> Option<Ty<'tcx>>
fn primitive_type_to_ty(&mut self, prim: PrimitiveType) -> Option<Ty<'tcx>>
Convert a PrimitiveType to a Ty, where possible.
This is used for resolving trait impls for primitives
sourcefn resolve_associated_item(
&mut self,
root_res: Res,
item_name: Symbol,
ns: Namespace,
module_id: DefId
) -> Option<(Res, ItemFragment)>
fn resolve_associated_item(
&mut self,
root_res: Res,
item_name: Symbol,
ns: Namespace,
module_id: DefId
) -> Option<(Res, ItemFragment)>
Resolve an associated item, returning its containing page’s Res
and the fragment targeting the associated item on its page.
sourcefn check_full_res(
&mut self,
ns: Namespace,
path_str: &str,
module_id: DefId,
extra_fragment: &Option<String>
) -> Option<Res>
fn check_full_res(
&mut self,
ns: Namespace,
path_str: &str,
module_id: DefId,
extra_fragment: &Option<String>
) -> Option<Res>
Used for reporting better errors.
Returns whether the link resolved ‘fully’ in another namespace.
‘fully’ here means that all parts of the link resolved, not just some path segments.
This returns the Res even if it was erroneous for some reason
(such as having invalid URL fragments or being in the wrong namespace).
sourceimpl LinkCollector<'_, '_>
impl LinkCollector<'_, '_>
sourcefn resolve_link(
&mut self,
item: &Item,
dox: &str,
self_name: &Option<String>,
parent_node: Option<DefId>,
krate: CrateNum,
ori_link: MarkdownLink
) -> Option<ItemLink>
fn resolve_link(
&mut self,
item: &Item,
dox: &str,
self_name: &Option<String>,
parent_node: Option<DefId>,
krate: CrateNum,
ori_link: MarkdownLink
) -> Option<ItemLink>
This is the entry point for resolving an intra-doc link.
FIXME(jynelson): this is way too many arguments
fn verify_disambiguator(
&self,
path_str: &str,
ori_link: &MarkdownLink,
kind: DefKind,
id: DefId,
disambiguator: Option<Disambiguator>,
item: &Item,
diag_info: &DiagnosticInfo<'_>
) -> Option<()>
fn report_disambiguator_mismatch(
&self,
path_str: &str,
ori_link: &MarkdownLink,
specified: Disambiguator,
resolved: Res,
diag_info: &DiagnosticInfo<'_>
)
fn report_rawptr_assoc_feature_gate(
&self,
dox: &str,
ori_link: &MarkdownLink,
item: &Item
)
fn resolve_with_disambiguator_cached(
&mut self,
key: ResolutionInfo,
diag: DiagnosticInfo<'_>,
cache_resolution_failure: bool
) -> Option<(Res, Option<UrlFragment>)>
sourcefn resolve_with_disambiguator(
&mut self,
key: &ResolutionInfo,
diag: DiagnosticInfo<'_>
) -> Option<(Res, Option<UrlFragment>)>
fn resolve_with_disambiguator(
&mut self,
key: &ResolutionInfo,
diag: DiagnosticInfo<'_>
) -> Option<(Res, Option<UrlFragment>)>
After parsing the disambiguator, resolve the main part of the link.
Trait Implementations
sourceimpl<'a, 'tcx> DocVisitor for LinkCollector<'a, 'tcx>
impl<'a, 'tcx> DocVisitor for LinkCollector<'a, 'tcx>
fn visit_item(&mut self, item: &Item)
sourcefn visit_inner_recur(&mut self, kind: &ItemKind)
fn visit_inner_recur(&mut self, kind: &ItemKind)
don’t override!
sourcefn visit_item_recur(&mut self, item: &Item)
fn visit_item_recur(&mut self, item: &Item)
don’t override!
fn visit_mod(&mut self, m: &Module)
fn visit_crate(&mut self, c: &Crate)
Auto Trait Implementations
impl<'a, 'tcx> !RefUnwindSafe for LinkCollector<'a, 'tcx>
impl<'a, 'tcx> !Send for LinkCollector<'a, 'tcx>
impl<'a, 'tcx> !Sync for LinkCollector<'a, 'tcx>
impl<'a, 'tcx> Unpin for LinkCollector<'a, 'tcx> where
'tcx: 'a,
impl<'a, 'tcx> !UnwindSafe for LinkCollector<'a, 'tcx>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<T> Pointable for T
impl<T> Pointable for T
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
pub fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber to this type, returning a
WithDispatch wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more
impl<'a, T> Captures<'a> for T where
T: ?Sized,
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: 64 bytes