我想要用于FFI的通用struct Foo<T>
。例如,以下内容可用于内存映射实现。
use std::marker::PhantomData;
use memmap::MmapMut;
#[repr(C)]
struct Shared<T> {
foo: MmapMut,
_marker: PhantomData<T>,
}
我希望这是FFI安全的,所以我想强制T
也必须是repr(C)
。问题是表示形式不是Rust中的特征,因此我没有看到一种直接强制执行此方法的方法,例如struct Foo<T: ReprC>
会很好,但据我所知,它不存在。可以使用宏吗?
答案 0 :(得分:1)
也许你可以制作一个特征ReprC
,并将其用作你方法的特征。它没有强制执行真正重要的事情,但它可能比文档更好。