我在做一个对性能有要求的工具,类似于消息总线,使用者能发布或订阅一类“消息”,这个“消息”被定义为了一个struct。
每条消息总线对应不同的struct。
出于性能考虑,以及与C++组件的数据交互,底层有较多的unsafe的指针操作,数据的读写也基本全是memcpy。
代码类似于:
pub fn<T>(data: &T, mq: MessageQueue) {
unsafe{libc::memcpy(mq.addr, data.as_ptr(), mem::size_of::<T>());
}
那么问题来了,有什么trait能限定这个T,使得它必须是basic layout的么?也就是能被memcpy的。
Copy不符合需求,很多地方是需要move而不是copy的。
--
FROM 58.33.81.*