---
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::CustomModule(
::interoptopus::lang::meta::Module::from_string("foo"),
),
),
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)
}
}