Skip to content

rustdoc: item summaries that are headers are not printed in module pages, under hoedown #46377

Closed
@QuietMisdreavus

Description

@QuietMisdreavus
/// # Check out this struct!
pub struct SomeStruct;

This will show up differently in docs depending on whether Hoedown or Pulldown is being used. It's not a rendering difference for the markdown, per se, it's how the summary line is generated:

fn shorter<'a>(s: Option<&'a str>) -> String {
    match s {
        Some(s) => s.lines().take_while(|line|{
            (*line).chars().any(|chr|{
                !chr.is_whitespace()
            })
        }).collect::<Vec<_>>().join("\n"),
        None => "".to_string()
    }
}

That function is used to truncate markdown renderings from Hoedown for summary lines on module pages. Hoedown (presumably) emits an extra blank line before the <h1> in this sample, so this shorter function immediately sees a blank line and emits an empty string.

A fix for this could just add a skip_while(|s| s.chars().all(|c| c.is_whitespace())) before the take_while there, which would skip all empty/blank lines before the first block of text, and thus properly grab the first item from the block.

(Note: the reason this actually emits the header in Pulldown is that under Pulldown, shorter is not actually called! It goes through a separate adapter that wraps the event emitter from Pulldown and stops once the first block is complete. This way it skips the leading-whitespace problem entirely.)

Metadata

Metadata

Labels

A-docsArea: Documentation for any part of the project, including the compiler, standard library, and toolsE-easyCall for participation: Easy difficulty. Experience needed to fix: Not much. Good first issue.E-mentorCall for participation: This issue has a mentor. Use #t-compiler/help on Zulip for discussion.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions