pub struct TypeRenderer<'a> { /* private fields */ }Expand description
Type renderer for converting rustdoc types to Rust syntax strings.
This struct holds a reference to the crate context and provides methods to render various type constructs into their string representations.
§Design Note
The krate field is currently unused because the Type enum is self-contained.
However, it is retained for:
- Future-proofing: May need to look up items in
krate.indexfor enhanced rendering - API consistency: Signals that the renderer is bound to a specific crate context
- Type safety: Prevents accidentally mixing renderers across different crates
§Example
let renderer = TypeRenderer::new(&krate);
let type_str = renderer.render_type(&some_type);
let generics = renderer.render_generics(¶ms);Implementations§
Source§impl<'a> TypeRenderer<'a>
impl<'a> TypeRenderer<'a>
Sourcepub const fn new(krate: &'a Crate) -> Self
pub const fn new(krate: &'a Crate) -> Self
Create a new type renderer with the given crate context.
§Arguments
krate- The parsed rustdoc crate containing type definitions
Sourcepub const fn get_type_id(&self, ty: &Type) -> Option<Id>
pub const fn get_type_id(&self, ty: &Type) -> Option<Id>
Get the ID of a resolved type, if available.
Returns Some(Id) for resolved path types (named types like structs,
enums, traits), None for primitives and other type variants.
§Arguments
ty- The type to extract the ID from
Sourcepub fn render_type<'t>(&self, ty: &'t Type) -> Cow<'t, str>
pub fn render_type<'t>(&self, ty: &'t Type) -> Cow<'t, str>
Render a rustdoc Type to its Rust syntax string representation.
This is the main entry point for type rendering. It handles all variants
of the Type enum and recursively renders nested types.
§Arguments
ty- The type to render
§Returns
A Cow<str> representing the type in Rust syntax. Simple types like
primitives and generics return borrowed strings to avoid allocation.
§Supported Type Variants
- Primitives:
u32,bool,str, etc. - References:
&T,&'a mut T - Pointers:
*const T,*mut T - Slices and arrays:
[T],[T; N] - Tuples:
(A, B, C) - Paths:
std::vec::Vec<T> - Function pointers:
fn(A, B) -> C - Trait objects:
dyn Trait + Send - Impl trait:
impl Iterator<Item = T> - Qualified paths:
<T as Trait>::Item
Sourcepub fn render_generic_bound<'t>(&self, bound: &'t GenericBound) -> Cow<'t, str>
pub fn render_generic_bound<'t>(&self, bound: &'t GenericBound) -> Cow<'t, str>
Render a generic bound (trait bound or lifetime bound).
§Examples
- Trait bound:
Clone,Iterator<Item = T> - Modified bound:
?Sized,~const Drop - Lifetime bound:
'static,'a
Sourcepub fn render_generics(&self, generics: &[GenericParamDef]) -> String
pub fn render_generics(&self, generics: &[GenericParamDef]) -> String
Render a list of generic parameter definitions.
Produces the <T, U, const N: usize> portion of a signature.
§Arguments
generics- The list of generic parameters from rustdoc
§Returns
A string like <T, U> or empty string if no generics.
§Filtering
Synthetic parameters (generated by the compiler for impl Trait)
are filtered out since they don’t appear in the source.
Sourcepub fn render_where_clause(&self, where_predicates: &[WherePredicate]) -> String
pub fn render_where_clause(&self, where_predicates: &[WherePredicate]) -> String
Sourcepub fn collect_linkable_types(&self, ty: &Type) -> Vec<(String, Id)>
pub fn collect_linkable_types(&self, ty: &Type) -> Vec<(String, Id)>
Collect all linkable type names from a type.
This extracts type names that could potentially be linked to their definitions.
Returns a set of (ype_name, type_id) pairs for ResolvedPath types.
§Linkable Types
ResolvedPathtypes (e.g.,Vec,HashMap,MyStruct)- Nested types within generics, references, slices, etc.
§Excluded
- Primitives (e.g.,
u32,bool) - Generic parameters (e.g.,
T,U) - Inferred types (
_)
Trait Implementations§
Source§impl<'a> Clone for TypeRenderer<'a>
impl<'a> Clone for TypeRenderer<'a>
Source§fn clone(&self) -> TypeRenderer<'a>
fn clone(&self) -> TypeRenderer<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'a> Debug for TypeRenderer<'a>
impl<'a> Debug for TypeRenderer<'a>
impl<'a> Copy for TypeRenderer<'a>
Auto Trait Implementations§
impl<'a> Freeze for TypeRenderer<'a>
impl<'a> RefUnwindSafe for TypeRenderer<'a>
impl<'a> Send for TypeRenderer<'a>
impl<'a> Sync for TypeRenderer<'a>
impl<'a> Unpin for TypeRenderer<'a>
impl<'a> UnwindSafe for TypeRenderer<'a>
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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