pub struct Resolver<'a> { /* private fields */ }Expand description
A navigation engine over a Navigator.
Construct one per query (e.g. one per top-level command in a Request).
The frame stack drains to empty between top-level methods, so a single
Resolver is reusable across many lookups in the same operation.
Methods that walk through items take &mut self because resolution
mutates the frame stack. Returned DocRefs borrow from the underlying
Navigator, so they outlive the Resolver.
Implementations§
Source§impl<'a> Resolver<'a>
impl<'a> Resolver<'a>
Sourcepub fn resolve_path(
&mut self,
path: &str,
suggestions: &mut Vec<Suggestion<'a>>,
) -> Option<DocRef<'a, Item>>
pub fn resolve_path( &mut self, path: &str, suggestions: &mut Vec<Suggestion<'a>>, ) -> Option<DocRef<'a, Item>>
Resolve a path like "std::vec::Vec" or "tokio@1::runtime::Runtime".
Primary string entrypoint for any user-supplied crate or item path.
Source§impl<'a> Resolver<'a>
impl<'a> Resolver<'a>
Sourcepub fn find_child(
&mut self,
parent: DocRef<'a, Item>,
target: &str,
) -> Option<DocRef<'a, Item>>
pub fn find_child( &mut self, parent: DocRef<'a, Item>, target: &str, ) -> Option<DocRef<'a, Item>>
Find a child of parent named target. Used for single-segment lookups
(e.g. walking item_summary.path to wire up “Defined at” links).
Sourcepub fn find_by_path<'s>(
&mut self,
parent: DocRef<'a, Item>,
segments: impl IntoIterator<Item = &'s str>,
) -> Option<DocRef<'a, Item>>
pub fn find_by_path<'s>( &mut self, parent: DocRef<'a, Item>, segments: impl IntoIterator<Item = &'s str>, ) -> Option<DocRef<'a, Item>>
Walk a sequence of name segments from parent.
Source§impl<'a> Resolver<'a>
impl<'a> Resolver<'a>
Sourcepub fn follow_use(
&mut self,
use_item: DocRef<'a, Use>,
parent_module: DocRef<'a, Item>,
) -> Option<DocRef<'a, Item>>
pub fn follow_use( &mut self, use_item: DocRef<'a, Use>, parent_module: DocRef<'a, Item>, ) -> Option<DocRef<'a, Item>>
Resolve a Use to its target item. Tries use_item.id first (cheap
local lookup, can’t cycle); on miss, falls back to resolving the
source path string against the parent module’s path.
parent_module is the module containing the Use, used to resolve
self::/super:: prefixes in the source string.
Source§impl<'a> Resolver<'a>
impl<'a> Resolver<'a>
Sourcepub fn children(&mut self, item: DocRef<'a, Item>) -> Vec<DocRef<'a, Item>>
pub fn children(&mut self, item: DocRef<'a, Item>) -> Vec<DocRef<'a, Item>>
Children of item with Uses resolved and globs expanded. Equivalent
to the old item.child_items().
Sourcepub fn children_including_uses(
&mut self,
item: DocRef<'a, Item>,
) -> Vec<DocRef<'a, Item>>
pub fn children_including_uses( &mut self, item: DocRef<'a, Item>, ) -> Vec<DocRef<'a, Item>>
Children of item, but yield Use items themselves rather than their
targets. Used by the search indexer to record use statements.
Source§impl<'a> Resolver<'a>
impl<'a> Resolver<'a>
Sourcepub fn get_path(
&mut self,
origin: DocRef<'a, Item>,
id: Id,
) -> Option<DocRef<'a, Item>>
pub fn get_path( &mut self, origin: DocRef<'a, Item>, id: Id, ) -> Option<DocRef<'a, Item>>
Resolve an Id from origin’s crate to a DocRef. The id is looked
up in origin’s rustdoc paths map; for external-crate ids this
crosses the crate boundary, loading the target crate if needed and
walking its public path.
Auto Trait Implementations§
impl<'a> Freeze for Resolver<'a>
impl<'a> !RefUnwindSafe for Resolver<'a>
impl<'a> Send for Resolver<'a>
impl<'a> Sync for Resolver<'a>
impl<'a> Unpin for Resolver<'a>
impl<'a> UnsafeUnpin for Resolver<'a>
impl<'a> !UnwindSafe for Resolver<'a>
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.