interoptopus_proc_impl 0.16.3

Macros to produce Interoptopus item info.
Documentation
---
source: crates/proc_macros_impl/tests/ty_module.rs
expression: expand_ffi!(item)
---
#[repr(C)]
struct Foo {
    x: u8,
}
#[allow(
    clippy::eq_op,
    clippy::type_repetition_in_bounds,
    clippy::used_underscore_binding
)]
unsafe impl ::interoptopus::lang::types::TypeInfo for Foo {
    const WIRE_SAFE: bool = <u8 as ::interoptopus::lang::types::TypeInfo>::WIRE_SAFE;
    const RAW_SAFE: bool = <u8 as ::interoptopus::lang::types::TypeInfo>::RAW_SAFE;
    const ASYNC_SAFE: bool = <u8 as ::interoptopus::lang::types::TypeInfo>::ASYNC_SAFE;
    const SERVICE_SAFE: bool = false;
    const SERVICE_CTOR_SAFE: bool = false;
    const OPTION_PTR_SAFE: bool = false;
    fn id() -> ::interoptopus::inventory::TypeId {
        ::interoptopus::inventory::TypeId::from_id(::interoptopus::id!(Foo))
    }
    fn kind() -> ::interoptopus::lang::types::TypeKind {
        ::interoptopus::lang::types::TypeKind::Struct(::interoptopus::lang::types::Struct {
            fields: vec![
                ::interoptopus::lang::types::Field { name : "x".to_string(), docs :
                ::interoptopus::lang::meta::Docs::from_line(""), visibility :
                ::interoptopus::lang::meta::Visibility::Public, ty : < u8 as
                ::interoptopus::lang::types::TypeInfo > ::id(), }
            ],
            repr: ::interoptopus::lang::types::Repr {
                layout: ::interoptopus::lang::types::Layout::C,
                alignment: ::std::option::Option::None,
            },
        })
    }
    fn ty() -> ::interoptopus::lang::types::Type {
        ::interoptopus::lang::types::Type {
            name: "Foo".to_string(),
            visibility: ::interoptopus::lang::meta::Visibility::Public,
            docs: ::interoptopus::lang::meta::Docs::from_line(""),
            emission: ::interoptopus::lang::meta::Emission::FileEmission(
                ::interoptopus::lang::meta::FileEmission::Common,
            ),
            kind: Self::kind(),
        }
    }
    fn register(inventory: &mut impl ::interoptopus::inventory::Inventory) {
        <u8 as ::interoptopus::lang::types::TypeInfo>::register(inventory);
        inventory.register_type(Self::id(), Self::ty());
    }
}
#[allow(clippy::used_underscore_binding, clippy::type_repetition_in_bounds)]
unsafe impl ::interoptopus::lang::types::WireIO for Foo
where
    u8: ::interoptopus::lang::types::WireIO,
{
    fn write(
        &self,
        out: &mut impl ::std::io::Write,
    ) -> ::std::result::Result<(), ::interoptopus::wire::SerializationError> {
        <u8 as ::interoptopus::lang::types::WireIO>::write(&self.x, out)?;
        ::std::result::Result::Ok(())
    }
    fn read(
        input: &mut impl ::std::io::Read,
    ) -> ::std::result::Result<Self, ::interoptopus::wire::SerializationError>
    where
        Self: Sized,
    {
        let x = <u8 as ::interoptopus::lang::types::WireIO>::read(input)?;
        ::std::result::Result::Ok(Self { x })
    }
    fn live_size(&self) -> usize {
        <u8 as ::interoptopus::lang::types::WireIO>::live_size(&self.x)
    }
}