< 返回版块

caohaiwd 发表于 2019-10-03 00:10

Tags:struct,布局

rust struct 的布局到底和什么有关,例如:

struct XXX {
  x: i32,
  y: f64,
  ...
}

注意,我并不关心x、y字段的具体偏移,而是这些字段名字、顺序、类型不变的情况下,其他信息变更后x 、y的偏移是不是也会发生变化,其他信息包括且不限于:

  1. struct 名字和路径
  2. rust 版本

PS:本人近期想写一个高性能持久化 index,数据存储 no deserialization,估计要用 mmap + plain type的方案,因此要保证 build、search过程的绝对安全性

评论区

写评论
FuGangqiang 2019-10-06 20:58

repr(C)

songzhi 2019-10-03 15:57

nomicon:

Rust does guarantee that two instances of A have their data laid out in exactly the same way. However Rust does not currently guarantee that an instance of A has the same field ordering or padding as an instance of B.

尽管现在可能不会变化,但是Rust编译器没保证两个除了名字其他都一样的结构体有着相同的布局.

1 共 2 条评论, 1 页