struct_scalpel 0.1.1

memory layout analysis tool for structs, enums, unions, tuples, and references
Documentation

struct_scalpel

Github crates.io License Stars Lines of code


Memory layout analysis tool for rust structs, enums, unions, tuples, and references, prints to console using ansi escape codes.

Simply derive Dissectible and call print_dissection_info to get a well formatted overview.

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>();
}

With dissect_std you can even disect some std items, with only a few type path deviations for private types.

  • String
  • Option
  • Result<T, E>
  • Box<T, A: Allocator>
  • Rc
  • cell
    • UnsafeCell
    • Cell
    • RefCell
    • OnceCell
  • sync
    • OnceLock

Disclaimer: This may not work in all cases, such as where some fields are unsized or dependant on a sys (os) implementation

This also works with generics and different layout strategies