Add unstable docs for rustc_attrs
This commit is contained in:
parent
dda8a7fde9
commit
f772587aba
50
src/doc/unstable-book/src/language-features/rustc-attrs.md
Normal file
50
src/doc/unstable-book/src/language-features/rustc-attrs.md
Normal file
@ -0,0 +1,50 @@
|
||||
# `rustc_attrs`
|
||||
|
||||
This feature has no tracking issue, and is therefore likely internal to
|
||||
the compiler, not being intended for general use.
|
||||
|
||||
------------------------
|
||||
|
||||
The `rustc_attrs` feature allows debugging rustc type layouts by using
|
||||
`#[rustc_layout(...)]` to debug layout at compile time (it even works
|
||||
with `cargo check`) as an alternative to `rustc -Z print-type-sizes`
|
||||
that is way more verbose.
|
||||
|
||||
Options provided by `#[rustc_layout(...)]` are `debug`, `size`, `abi`.
|
||||
Note that it only work best with sized type without generics.
|
||||
|
||||
## Examples
|
||||
|
||||
```rust
|
||||
#![feature(rustc_attrs)]
|
||||
|
||||
#[rustc_layout(abi, size)]
|
||||
pub enum X {
|
||||
Y(u8, u8, u8),
|
||||
Z(isize),
|
||||
}
|
||||
```
|
||||
|
||||
When that is compiled, the compiler will error with something like
|
||||
|
||||
```
|
||||
error: abi: Aggregate { sized: true }
|
||||
--> src/lib.rs:4:1
|
||||
|
|
||||
4 | / pub enum T {
|
||||
5 | | Y(u8, u8, u8),
|
||||
6 | | Z(isize),
|
||||
7 | | }
|
||||
| |_^
|
||||
|
||||
error: size: Size { raw: 16 }
|
||||
--> src/lib.rs:4:1
|
||||
|
|
||||
4 | / pub enum T {
|
||||
5 | | Y(u8, u8, u8),
|
||||
6 | | Z(isize),
|
||||
7 | | }
|
||||
| |_^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
```
|
Loading…
Reference in New Issue
Block a user