diff --git a/docs/src/html.rs b/docs/src/html.rs index bb6204a3ce..517235c7d1 100644 --- a/docs/src/html.rs +++ b/docs/src/html.rs @@ -307,11 +307,17 @@ impl<'a> Handler<'a> { *id_slot = (!id.is_empty()).then_some(id); - // Special case for things like "v0.3.0". + let title = self.peeked.as_ref().map(|text| text.to_string()); let name = if id.starts_with('v') && id.contains('.') { + // Special case for things like "v0.3.0". id.into() - } else { + } else if title.iter().all(|c| c.is_ascii()) { id.to_title_case().into() + } else { + self.ids + .alloc(title.expect("heading should always have a title")) + .as_str() + .into() }; let mut children = &mut self.outline;