#memory-layout #layout #struct #enums #memory #type

nightly struct_scalpel

结构体、枚举、联合、元组和引用的内存布局分析工具

2个版本

0.1.1 2023年7月1日
0.1.0 2023年7月1日

#553 in 调试

自定义许可证

59KB
534 代码行

struct_scalpel

Github crates.io License Stars Lines of code


使用ansi转义码打印到控制台的Rust结构体、枚举、联合、元组和引用的内存布局分析工具。

简单地使用Dissectible派生并调用print_dissection_info以获取格式良好的概述。

use struct_scalpel::{Dissectible, print_dissection_info};

#[derive(Dissectible)]
struct Person {
    name: String,
    age: u32,
    is_student: bool,
    height: f64,
    favorite_numbers: Vec<u8>,
}

fn main() {
    print_dissection_info::<Person>();
}

使用dissect_std,您甚至可以分析一些std项,只需对私有类型进行少量类型路径偏差。

  • String
  • Option
  • Result
  • Box
  • Rc
  • cell
    • UnsafeCell
    • Cell
    • RefCell
    • OnceCell
  • sync
    • OnceLock

免责声明:这可能在所有情况下都不适用,例如,某些字段大小未定义或依赖于系统(操作系统)实现。

这也适用于泛型和不同的布局策略。

依赖项

~0.5–12MB
~79K SLoC