rustdoc: Note in a type's layout/size if it is uninhabited

This commit is contained in:
clubby789 2023-03-04 12:07:29 +00:00
parent 13471d3b20
commit 7520155e4e
2 changed files with 14 additions and 0 deletions

View File

@ -1839,6 +1839,12 @@ fn document_type_layout(w: &mut Buffer, cx: &Context<'_>, ty_def_id: DefId) {
} else {
let size = layout.size.bytes() - tag_size;
write!(w, "{size} byte{pl}", pl = if size == 1 { "" } else { "s" },);
if layout.abi.is_uninhabited() {
write!(
w,
" (<a href=\"https://doc.rust-lang.org/stable/reference/glossary.html#uninhabited\">uninhabited</a>)"
);
}
}
}

View File

@ -83,3 +83,11 @@ pub enum WithNiche {
None,
Some(std::num::NonZeroU32),
}
// @hasraw type_layout/enum.Uninhabited.html 'Size: '
// @hasraw - '0 bytes (<a href="https://doc.rust-lang.org/stable/reference/glossary.html#uninhabited">uninhabited</a>)'
pub enum Uninhabited {}
// @hasraw type_layout/struct.Uninhabited2.html 'Size: '
// @hasraw - '8 bytes (<a href="https://doc.rust-lang.org/stable/reference/glossary.html#uninhabited">uninhabited</a>)'
pub struct Uninhabited2(std::convert::Infallible, u64);