rust-spec 0.7.1

Classification of types in accordance with the Rust specification
Documentation
#![allow(dead_code)]

use rust_spec::RustSpec;

#[derive(RustSpec)]
struct RustStruct(u8);

impl Drop for RustStruct {
    fn drop(&mut self) {}
}

#[derive(RustSpec)]
#[repr(C)]
struct ReprCStruct(u8);

impl Drop for ReprCStruct {
    fn drop(&mut self) {}
}

#[derive(RustSpec)]
#[repr(transparent)]
struct TransparentStruct(u8);

impl Drop for TransparentStruct {
    fn drop(&mut self) {}
}

#[derive(RustSpec)]
struct Generic<T>(core::marker::PhantomData<T>);

impl<T> Drop for Generic<T> {
    fn drop(&mut self) {}
}

#[derive(RustSpec)]
#[repr(transparent)]
enum TransparentEnum {
    Value(u8),
}

impl Drop for TransparentEnum {
    fn drop(&mut self) {}
}

#[derive(RustSpec)]
enum RustDataEnum {
    Value(u8),
    Empty,
}

impl Drop for RustDataEnum {
    fn drop(&mut self) {}
}

#[derive(RustSpec)]
#[repr(u8)]
enum PrimitiveDataEnum {
    Value(u8),
    Empty,
}

impl Drop for PrimitiveDataEnum {
    fn drop(&mut self) {}
}

#[derive(RustSpec)]
#[repr(u8)]
enum FieldlessEnum {
    Value,
    Empty,
}

impl Drop for FieldlessEnum {
    fn drop(&mut self) {}
}

#[derive(RustSpec)]
#[repr(C)]
enum DataEnum {
    Value(u8),
    Empty,
}

impl Drop for DataEnum {
    fn drop(&mut self) {}
}

#[derive(RustSpec)]
union ValueUnion {
    value: u8,
}

impl Drop for ValueUnion {
    fn drop(&mut self) {}
}

fn main() {}