librustdoc: create MaybeDisplay
helper for Option<T: Display>
types
This commit is contained in:
parent
d88ffcdb8b
commit
e4636e2613
5 changed files with 22 additions and 4 deletions
|
@ -13,8 +13,8 @@ use rustc_session::parse::ParseSess;
|
|||
use rustc_span::Span;
|
||||
use rustc_span::symbol::{Symbol, sym};
|
||||
|
||||
use crate::display::Joined as _;
|
||||
use crate::html::escape::Escape;
|
||||
use crate::joined::Joined as _;
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
//! Various utilities for working with [`fmt::Display`] implementations.
|
||||
|
||||
use std::fmt::{self, Display, Formatter};
|
||||
|
||||
pub(crate) trait Joined: IntoIterator {
|
||||
|
@ -27,3 +29,19 @@ where
|
|||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) trait MaybeDisplay {
|
||||
/// For a given `Option<T: Display>`, returns a `Display` implementation that will display `t` if `Some(t)`, or nothing if `None`.
|
||||
fn maybe_display(self) -> impl Display;
|
||||
}
|
||||
|
||||
impl<T: Display> MaybeDisplay for Option<T> {
|
||||
fn maybe_display(self) -> impl Display {
|
||||
fmt::from_fn(move |f| {
|
||||
if let Some(t) = self.as_ref() {
|
||||
t.fmt(f)?;
|
||||
}
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
}
|
|
@ -30,11 +30,11 @@ use super::url_parts_builder::{UrlPartsBuilder, estimate_item_path_byte_length};
|
|||
use crate::clean::types::ExternalLocation;
|
||||
use crate::clean::utils::find_nearest_parent_module;
|
||||
use crate::clean::{self, ExternalCrate, PrimitiveType};
|
||||
use crate::display::Joined as _;
|
||||
use crate::formats::cache::Cache;
|
||||
use crate::formats::item_type::ItemType;
|
||||
use crate::html::escape::{Escape, EscapeBodyText};
|
||||
use crate::html::render::Context;
|
||||
use crate::joined::Joined as _;
|
||||
use crate::passes::collect_intra_doc_links::UrlFragment;
|
||||
|
||||
pub(crate) fn write_str(s: &mut String, f: fmt::Arguments<'_>) {
|
||||
|
|
|
@ -27,6 +27,7 @@ use super::{
|
|||
};
|
||||
use crate::clean;
|
||||
use crate::config::ModuleSorting;
|
||||
use crate::display::Joined as _;
|
||||
use crate::formats::Impl;
|
||||
use crate::formats::item_type::ItemType;
|
||||
use crate::html::escape::{Escape, EscapeBodyTextWithWbr};
|
||||
|
@ -37,7 +38,6 @@ use crate::html::format::{
|
|||
use crate::html::markdown::{HeadingOffset, MarkdownSummaryLine};
|
||||
use crate::html::render::{document_full, document_item_info};
|
||||
use crate::html::url_parts_builder::UrlPartsBuilder;
|
||||
use crate::joined::Joined as _;
|
||||
|
||||
/// Generates a Rinja template struct for rendering items with common methods.
|
||||
///
|
||||
|
|
|
@ -106,6 +106,7 @@ macro_rules! map {
|
|||
mod clean;
|
||||
mod config;
|
||||
mod core;
|
||||
mod display;
|
||||
mod docfs;
|
||||
mod doctest;
|
||||
mod error;
|
||||
|
@ -114,7 +115,6 @@ mod fold;
|
|||
mod formats;
|
||||
// used by the error-index generator, so it needs to be public
|
||||
pub mod html;
|
||||
mod joined;
|
||||
mod json;
|
||||
pub(crate) mod lint;
|
||||
mod markdown;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue