diff --git a/src/librustdoc/formats/cache.rs b/src/librustdoc/formats/cache.rs index 1ca462b181d..72881eccf3e 100644 --- a/src/librustdoc/formats/cache.rs +++ b/src/librustdoc/formats/cache.rs @@ -126,7 +126,7 @@ pub struct Cache { impl Cache { pub fn from_krate( - renderinfo: RenderInfo, + render_info: RenderInfo, document_private: bool, extern_html_root_urls: &BTreeMap, dst: &Path, @@ -142,7 +142,7 @@ impl Cache { deref_mut_trait_did, owned_box_did, .. - } = renderinfo; + } = render_info; let external_paths = external_paths.into_iter().map(|(k, (v, t))| (k, (v, ItemType::from(t)))).collect(); diff --git a/src/librustdoc/formats/mod.rs b/src/librustdoc/formats/mod.rs index 97e1af13b8a..7757ee7e515 100644 --- a/src/librustdoc/formats/mod.rs +++ b/src/librustdoc/formats/mod.rs @@ -9,11 +9,15 @@ use rustc_span::def_id::DefId; use crate::clean; use crate::clean::types::GetDefId; +/// Specifies whether rendering directly implemented trait items or ones from a certain Deref +/// impl. pub enum AssocItemRender<'a> { All, DerefFor { trait_: &'a clean::Type, type_: &'a clean::Type, deref_mut_: bool }, } +/// For different handling of associated items from the Deref target of a type rather than the type +/// itself. #[derive(Copy, Clone, PartialEq)] pub enum RenderMode { Normal, diff --git a/src/librustdoc/formats/renderer.rs b/src/librustdoc/formats/renderer.rs index d4ba6726cd2..7d23c7b8aff 100644 --- a/src/librustdoc/formats/renderer.rs +++ b/src/librustdoc/formats/renderer.rs @@ -7,23 +7,24 @@ use crate::config::{RenderInfo, RenderOptions}; use crate::error::Error; use crate::formats::cache::{Cache, CACHE_KEY}; +/// Allows for different backends to rustdoc to be used with the `Renderer::run()` function. Each +/// backend renderer has hooks for initialization, documenting an item, entering and exiting a +/// module, and cleanup/finalizing output. pub trait FormatRenderer: Clone { - type Output: FormatRenderer; - - /// Sets up any state required for the emulator. When this is called the cache has already been + /// Sets up any state required for the renderer. When this is called the cache has already been /// populated. fn init( krate: clean::Crate, options: RenderOptions, - renderinfo: RenderInfo, + render_info: RenderInfo, edition: Edition, cache: &mut Cache, - ) -> Result<(Self::Output, clean::Crate), Error>; + ) -> Result<(Self, clean::Crate), Error>; /// Renders a single non-module item. This means no recursive sub-item rendering is required. fn item(&mut self, item: clean::Item, cache: &Cache) -> Result<(), Error>; - /// Renders a module (doesn't need to handle recursing into children). + /// Renders a module (should not handle recursing into children). fn mod_item_in( &mut self, item: &clean::Item, @@ -54,19 +55,20 @@ impl Renderer { self, krate: clean::Crate, options: RenderOptions, - renderinfo: RenderInfo, + render_info: RenderInfo, diag: &rustc_errors::Handler, edition: Edition, ) -> Result<(), Error> { let (krate, mut cache) = Cache::from_krate( - renderinfo.clone(), + render_info.clone(), options.document_private, &options.extern_html_root_urls, &options.output, krate, ); - let (mut renderer, mut krate) = T::init(krate, options, renderinfo, edition, &mut cache)?; + let (mut format_renderer, mut krate) = + T::init(krate, options, render_info, edition, &mut cache)?; let cache = Arc::new(cache); // Freeze the cache now that the index has been built. Put an Arc into TLS for future @@ -81,7 +83,7 @@ impl Renderer { item.name = Some(krate.name.clone()); // Render the crate documentation - let mut work = vec![(renderer.clone(), item)]; + let mut work = vec![(format_renderer.clone(), item)]; while let Some((mut cx, item)) = work.pop() { if item.is_mod() { @@ -98,7 +100,7 @@ impl Renderer { _ => unreachable!(), }; for it in module.items { - info!("Adding {:?} to worklist", it.name); + debug!("Adding {:?} to worklist", it.name); work.push((cx.clone(), it)); } @@ -108,7 +110,7 @@ impl Renderer { } } - renderer.after_krate(&krate, &cache)?; - renderer.after_run(diag) + format_renderer.after_krate(&krate, &cache)?; + format_renderer.after_run(diag) } } diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index 7140cf00b6e..46c1b27986d 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -371,14 +371,12 @@ pub fn initial_ids() -> Vec { .collect() } +/// Generates the documentation for `crate` into the directory `dst` impl FormatRenderer for Context { - type Output = Self; - - /// Generates the documentation for `crate` into the directory `dst` fn init( mut krate: clean::Crate, options: RenderOptions, - _renderinfo: RenderInfo, + _render_info: RenderInfo, edition: Edition, cache: &mut Cache, ) -> Result<(Context, clean::Crate), Error> { diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index 0de9c6336bb..04651da4d09 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -67,7 +67,7 @@ mod doctree; mod error; mod fold; crate mod formats; -crate mod html; +pub mod html; mod markdown; mod passes; mod test;