pub struct UnifiedLinkRegistry { /* private fields */ }Expand description
Registry mapping item IDs to documentation paths across multiple crates.
Unlike LinkRegistry which handles a single crate, this registry
spans multiple crates and supports cross-crate link resolution with
disambiguation based on local/primary crate preference.
§Path Format
All paths use the nested format: {crate_name}/{module_path}/index.md
Examples:
tracing/index.md(crate root)tracing/span/index.md(module)tracing_core/subscriber/index.md(cross-crate reference)
§Link Resolution Priority
When resolving ambiguous names:
- Items in the current crate (where the link appears)
- Items in the primary crate (if specified via
--primary-crate) - Items with the shortest qualified path
§Performance
Uses hashbrown with raw entry API for zero-allocation lookups.
This avoids allocating a String for the crate name on every lookup.
Implementations§
Source§impl UnifiedLinkRegistry
impl UnifiedLinkRegistry
Sourcepub fn build(crates: &CrateCollection, primary_crate: Option<&str>) -> Self
pub fn build(crates: &CrateCollection, primary_crate: Option<&str>) -> Self
Sourcepub fn get_path(&self, crate_name: &str, id: Id) -> Option<&CompactString>
pub fn get_path(&self, crate_name: &str, id: Id) -> Option<&CompactString>
Get the file path for an item in a specific crate.
Uses raw entry API for zero-allocation lookup.
Sourcepub fn get_name(&self, crate_name: &str, id: Id) -> Option<&CompactString>
pub fn get_name(&self, crate_name: &str, id: Id) -> Option<&CompactString>
Get the display name for an item.
Uses raw entry API for zero-allocation lookup.
Sourcepub fn get_re_export_source(
&self,
crate_name: &str,
id: Id,
) -> Option<&CompactString>
pub fn get_re_export_source( &self, crate_name: &str, id: Id, ) -> Option<&CompactString>
Get the original source path for an external re-export.
Returns Some("crate::path::Item") if this item is a re-export
from another crate, None otherwise.
Sourcepub fn resolve_reexport(
&self,
crate_name: &str,
id: Id,
) -> Option<(CompactString, Id)>
pub fn resolve_reexport( &self, crate_name: &str, id: Id, ) -> Option<(CompactString, Id)>
Resolve through re-export chain to find the canonical item.
If the item is an external re-export, follows the source path
to find the original crate and ID. Returns the original if found,
otherwise returns None.
§Arguments
crate_name- The crate where the re-export appearsid- The ID of the re-export Use item
§Returns
Some((original_crate, original_id)) if the re-export chain can be resolved,
None if there’s no re-export source or the original can’t be found.
Sourcepub fn resolve_name(
&self,
name: &str,
current_crate: &str,
) -> Option<(CompactString, Id)>
pub fn resolve_name( &self, name: &str, current_crate: &str, ) -> Option<(CompactString, Id)>
Resolve an item name to its crate and ID.
Uses disambiguation priority:
- Current crate (modules preferred over macros)
- Primary crate (if set, modules preferred)
- First module match, then first non-module match
Sourcepub fn resolve_path(&self, path: &str) -> Option<(CompactString, Id)>
pub fn resolve_path(&self, path: &str) -> Option<(CompactString, Id)>
Resolve a full path like regex_automata::Regex to its crate and ID.
This is used for resolving external re-exports where use_item.id is None
but the source path is available.
§Arguments
path- Full path likeregex_automata::Regexortracing_core::span::Span
§Returns
The (crate_name, item_id) if found in the registry.
Sourcepub fn create_link(
&self,
from_crate: &str,
from_path: &str,
to_crate: &str,
to_id: Id,
) -> Option<String>
pub fn create_link( &self, from_crate: &str, from_path: &str, to_crate: &str, to_id: Id, ) -> Option<String>
Create a markdown link from one file to another across crates.
§Arguments
from_crate- The crate where the link appearsfrom_path- The file path where the link appearsto_crate- The target crateto_id- The target item’s ID
§Returns
A formatted markdown link like [Name](relative/path.md),
or None if the target item isn’t registered.
Sourcepub fn compute_cross_crate_path(from: &str, to: &str) -> String
pub fn compute_cross_crate_path(from: &str, to: &str) -> String
Compute relative path between files potentially in different crates.
§Examples
tracing/span/index.mdtotracing_core/subscriber/index.md=../../tracing_core/subscriber/index.mdtracing/index.mdtotracing/span/index.md=span/index.md
Trait Implementations§
Source§impl Debug for UnifiedLinkRegistry
impl Debug for UnifiedLinkRegistry
Source§impl Default for UnifiedLinkRegistry
impl Default for UnifiedLinkRegistry
Source§fn default() -> UnifiedLinkRegistry
fn default() -> UnifiedLinkRegistry
Auto Trait Implementations§
impl Freeze for UnifiedLinkRegistry
impl RefUnwindSafe for UnifiedLinkRegistry
impl Send for UnifiedLinkRegistry
impl Sync for UnifiedLinkRegistry
impl Unpin for UnifiedLinkRegistry
impl UnwindSafe for UnifiedLinkRegistry
Blanket Implementations§
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more