ffi_struct_trait/lib.rs
1use std::vec::IntoIter;
2
3/// Field information structure
4#[derive(Debug, Clone, Copy)]
5pub struct MemberInfo {
6 pub size: usize,
7 pub offset: usize,
8 pub type_name: &'static str,
9 pub type_id: std::any::TypeId,
10}
11
12/// FFIStruct trait
13pub trait FFIStruct: Default {
14 /// Get field info (excluding padding)
15 fn iter_members(&self) -> IntoIter<(&'static str, MemberInfo)>;
16
17 /// Get all field info (including padding)
18 fn iter_all_members(&self) -> IntoIter<(&'static str, MemberInfo)>;
19}