pub trait ZeroSize<const ZERO: bool>: ZeroSize<ZERO> { }Expand description
Describes a type whose size is zero.
§Examples
#![feature(generic_const_exprs)]
struct Zst<T: size_trait::ZeroSize<true>>(T);
let _ = Zst(());
let _ = Zst(core::marker::PhantomData::<u8>);
let _ = Zst([] as [u64; 0]);
let _ = Zst(Zst(Zst(Zst((Zst(()), Zst(()))))));
struct NonZst<T: size_trait::ZeroSize<false>>(T);
let _ = NonZst(0);
let _ = NonZst(true);
let _ = NonZst(&[] as &[u64]);
let _ = NonZst([0u8; 100]);
let _ = NonZst(NonZst(NonZst(NonZst((NonZst(0u8), NonZst(0u8))))));§Compilation Errors
ⓘ
#![feature(generic_const_exprs)]
struct OneByte(u8);
impl size_trait::ZeroSize<true> for OneByte {}ⓘ
#![feature(generic_const_exprs)]
struct ZeroBytes;
impl size_trait::ZeroSize<false> for ZeroBytes {}ⓘ
#![feature(generic_const_exprs)]
struct Nothing<T: size_trait::ZeroSize<true>>(T);
let _ = Nothing(0u8);ⓘ
#![feature(generic_const_exprs)]
struct Something<T: size_trait::ZeroSize<false>>(T);
let _ = Something(());