about summary refs log tree commit diff
path: root/src/librustdoc/html
diff options
context:
space:
mode:
authorMichael Howell <michael@notriddle.com>2023-04-18 10:21:04 -0700
committerMichael Howell <michael@notriddle.com>2023-04-18 10:21:04 -0700
commit5f9746b94766e1dca4c4ee39da46a03a41d3fcd8 (patch)
treefb2edff18b7e2ef5572a1acdb1f6a086335a1bb3 /src/librustdoc/html
parent08f204e17f1f007d844743802e04d7f62689e966 (diff)
downloadrust-5f9746b94766e1dca4c4ee39da46a03a41d3fcd8.tar.gz
rust-5f9746b94766e1dca4c4ee39da46a03a41d3fcd8.zip
rustdoc: use a separate template for type layout size
Diffstat (limited to 'src/librustdoc/html')
-rw-r--r--src/librustdoc/html/render/print_item.rs24
-rw-r--r--src/librustdoc/html/templates/type_layout_size.html12
2 files changed, 24 insertions, 12 deletions
diff --git a/src/librustdoc/html/render/print_item.rs b/src/librustdoc/html/render/print_item.rs
index e089b55b9c4..3045e4b118b 100644
--- a/src/librustdoc/html/render/print_item.rs
+++ b/src/librustdoc/html/render/print_item.rs
@@ -1945,6 +1945,14 @@ fn document_type_layout<'a, 'cx: 'a>(
         ty_def_id: DefId,
     }
 
+    #[derive(Template)]
+    #[template(path = "type_layout_size.html")]
+    struct TypeLayoutSize {
+        is_unsized: bool,
+        is_uninhabited: bool,
+        size: u64,
+    }
+
     impl<'a, 'cx: 'a> TypeLayout<'a, 'cx> {
         fn variants<'b: 'a>(&'b self) -> Option<&'b IndexVec<VariantIdx, LayoutS>> {
             if let Variants::Multiple { variants, .. } =
@@ -1986,18 +1994,10 @@ fn document_type_layout<'a, 'cx: 'a>(
             tag_size: u64,
         ) -> impl fmt::Display + Captures<'cx> + Captures<'b> {
             display_fn(move |f| {
-                if layout.abi.is_unsized() {
-                    write!(f, "(unsized)")?;
-                } else {
-                    let size = layout.size.bytes() - tag_size;
-                    write!(f, "{size} byte{pl}", pl = if size == 1 { "" } else { "s" })?;
-                    if layout.abi.is_uninhabited() {
-                        write!(
-                            f,
-                            " (<a href=\"https://doc.rust-lang.org/stable/reference/glossary.html#uninhabited\">uninhabited</a>)"
-                        )?;
-                    }
-                }
+                let is_unsized = layout.abi.is_unsized();
+                let is_uninhabited = layout.abi.is_uninhabited();
+                let size = layout.size.bytes() - tag_size;
+                TypeLayoutSize { is_unsized, is_uninhabited, size }.render_into(f).unwrap();
                 Ok(())
             })
         }
diff --git a/src/librustdoc/html/templates/type_layout_size.html b/src/librustdoc/html/templates/type_layout_size.html
new file mode 100644
index 00000000000..9c2b39edc9f
--- /dev/null
+++ b/src/librustdoc/html/templates/type_layout_size.html
@@ -0,0 +1,12 @@
+{% if is_unsized %}
+  (unsized)
+{% else %}
+  {% if size == 1 %}
+    1 byte
+  {% else %}
+    {{ size +}} bytes
+  {% endif %}
+  {% if is_uninhabited %}
+    {# +#} (<a href="https://doc.rust-lang.org/stable/reference/glossary.html#uninhabited">uninhabited</a>)
+  {% endif %}
+{% endif %}