mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-30 18:53:39 +00:00
Make requested changes
This commit is contained in:
parent
65bf5d5248
commit
3d707a008e
@ -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<String, String>,
|
||||
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();
|
||||
|
@ -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,
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -371,14 +371,12 @@ pub fn initial_ids() -> Vec<String> {
|
||||
.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> {
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user