37 lines
1.3 KiB
Rust
37 lines
1.3 KiB
Rust
#![no_std]
|
|
|
|
// Rustdoc JSON *only* includes `#[repr(transparent)]`
|
|
// if the transparency is public API:
|
|
// - if a non-1-ZST field exists, it has to be public
|
|
// - otherwise, all fields are 1-ZST and at least one of them is public
|
|
//
|
|
// More info: https://doc.rust-lang.org/nomicon/other-reprs.html#reprtransparent
|
|
|
|
// Here, the non-1-ZST field is public.
|
|
// We expect `#[repr(transparent)]` in the attributes.
|
|
//
|
|
//@ is "$.index[?(@.name=='Transparent')].attrs" '["#[repr(transparent)]"]'
|
|
#[repr(transparent)]
|
|
pub struct Transparent(pub i64);
|
|
|
|
// Here the non-1-ZST field isn't public, so the attribute isn't included.
|
|
//
|
|
//@ has "$.index[?(@.name=='TransparentNonPub')]"
|
|
//@ is "$.index[?(@.name=='TransparentNonPub')].attrs" '[]'
|
|
#[repr(transparent)]
|
|
pub struct TransparentNonPub(i64);
|
|
|
|
// Only 1-ZST fields here, and one of them is public.
|
|
// We expect `#[repr(transparent)]` in the attributes.
|
|
//
|
|
//@ is "$.index[?(@.name=='AllZst')].attrs" '["#[repr(transparent)]"]'
|
|
#[repr(transparent)]
|
|
pub struct AllZst<'a>(pub core::marker::PhantomData<&'a ()>, ());
|
|
|
|
// Only 1-ZST fields here but none of them are public.
|
|
// The attribute isn't included.
|
|
//
|
|
//@ has "$.index[?(@.name=='AllZstNotPublic')]"
|
|
//@ is "$.index[?(@.name=='AllZstNotPublic')].attrs" '[]'
|
|
#[repr(transparent)]
|
|
pub struct AllZstNotPublic<'a>(core::marker::PhantomData<&'a ()>, ());
|