struct_scalpel

Crates.iostruct_scalpel
lib.rsstruct_scalpel
version0.1.1
sourcesrc
created_at2023-07-01 22:42:20.99167
updated_at2023-07-01 22:44:41.350402
descriptionmemory layout analysis tool for structs, enums, unions, tuples, and references
homepage
repositoryhttps://github.com/DragonFighter603/struct_scalpel
max_upload_size
id905754
size84,776
dragoπ (DragonFighter603)

documentation

README

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

Commit count: 19

cargo fmt