});
document(w, cx, it, None);
+
let mut fields = s
.fields
.iter()
document(w, cx, field, Some(it));
}
}
- render_assoc_items(w, cx, it, it.def_id.expect_real(), AssocItemRender::All)
+ let def_id = it.def_id.expect_real();
+ render_assoc_items(w, cx, it, def_id, AssocItemRender::All);
+ document_ty_layout(w, cx, def_id);
}
fn item_enum(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, e: &clean::Enum) {
});
document(w, cx, it, None);
+
if !e.variants.is_empty() {
write!(
w,
render_stability_since(w, variant, it, cx.tcx());
}
}
- render_assoc_items(w, cx, it, it.def_id.expect_real(), AssocItemRender::All)
+ let def_id = it.def_id.expect_real();
+ render_assoc_items(w, cx, it, def_id, AssocItemRender::All);
+ document_ty_layout(w, cx, def_id);
}
fn item_macro(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Macro) {
});
document(w, cx, it, None);
+
let mut fields = s
.fields
.iter()
}
}
}
- render_assoc_items(w, cx, it, it.def_id.expect_real(), AssocItemRender::All)
+ let def_id = it.def_id.expect_real();
+ render_assoc_items(w, cx, it, def_id, AssocItemRender::All);
+ document_ty_layout(w, cx, def_id);
}
fn item_static(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, s: &clean::Static) {
w.write_str("</div></details>");
}
}
+
+fn document_ty_layout(w: &mut Buffer, cx: &Context<'_>, ty_def_id: DefId) {
+ let param_env = cx.tcx().param_env(ty_def_id);
+ let ty = cx.tcx().type_of(ty_def_id);
+ match cx.tcx().layout_of(param_env.and(ty)) {
+ Ok(ty_layout) => {
+ writeln!(w, r#"<h2 class="small-section-header">Layout</h2>"#);
+ writeln!(w, "<div>");
+ if ty_layout.layout.abi.is_unsized() {
+ writeln!(w, "<strong>Sized:</strong> (unsized)");
+ } else {
+ writeln!(
+ w,
+ "<strong>Size:</strong> {size} byte{pl}",
+ size = ty_layout.layout.size.bytes(),
+ pl = if ty_layout.layout.size.bytes() == 1 { "" } else { "s" },
+ );
+ }
+ writeln!(w, "</div>");
+ }
+ // FIXME: should we crash instead? or report an error?
+ Err(_layout_err) => {}
+ }
+}