co3 0.3.1

Build C API from Rust
Documentation
use co3::{ReprC};
use rust_spec::RustSpec;

#[derive(RustSpec, ReprC)]
#[repr(u8)]
enum PrimitiveEnumWithoutDrop {
    A,
    B,
}

#[derive(RustSpec, ReprC)]
#[repr(u8)]
enum PrimitiveEnumWithDrop {
    A,
    B,
}

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

#[derive(Clone, RustSpec, ReprC)]
#[repr(transparent)]
enum TransparentEnumWithoutDrop {
    A(String),
}

#[derive(Clone, RustSpec, ReprC)]
#[repr(transparent)]
enum TransparentEnumWithDrop {
    A(String),
}

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

#[derive(RustSpec, ReprC)]
#[repr(C, u8)]
enum ReprCDataEnumWithoutDrop {
    A(u8),
}

#[derive(RustSpec, ReprC)]
#[repr(C, u8)]
enum ReprCDataEnumWithDrop {
    A(u8),
}

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

#[derive(RustSpec, ReprC)]
#[repr(u8)]
enum DataEnumWithoutDrop {
    A(u8),
}

#[derive(RustSpec, ReprC)]
#[repr(u8)]
enum DataEnumWithDrop {
    A(u8),
}

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

#[derive(RustSpec, ReprC)]
enum ReprRustDataEnumWithoutDrop {
    A(u8),
}

#[derive(RustSpec, ReprC)]
enum ReprRustDataEnumWithDrop {
    A(u8),
}

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

#[derive(RustSpec, ReprC)]
#[repr(C)]
struct ReprCStructWithoutDrop(u8);

#[derive(RustSpec, ReprC)]
#[repr(C)]
struct ReprCStructWithDrop(u8);

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

#[derive(Clone, RustSpec, ReprC)]
#[repr(transparent)]
struct TransparentStructWithoutDrop(u8);

#[derive(Clone, RustSpec, ReprC)]
#[repr(transparent)]
struct TransparentStructWithDrop(u8);

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

#[derive(RustSpec, ReprC)]
struct ReprRustStructWithoutDrop(u8);

#[derive(RustSpec, ReprC)]
struct ReprRustStructWithDrop(u8);

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

fn main() {}