diff options
Diffstat (limited to 'syn/examples/heapsize/example')
| -rw-r--r-- | syn/examples/heapsize/example/Cargo.toml | 9 | ||||
| -rw-r--r-- | syn/examples/heapsize/example/src/main.rs | 28 | 
2 files changed, 37 insertions, 0 deletions
diff --git a/syn/examples/heapsize/example/Cargo.toml b/syn/examples/heapsize/example/Cargo.toml new file mode 100644 index 0000000..85c7699 --- /dev/null +++ b/syn/examples/heapsize/example/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "heapsize_example" +version = "0.0.0" +authors = ["David Tolnay <dtolnay@gmail.com>"] +edition = "2018" +publish = false + +[dependencies] +heapsize = { path = "../heapsize" } diff --git a/syn/examples/heapsize/example/src/main.rs b/syn/examples/heapsize/example/src/main.rs new file mode 100644 index 0000000..9332b11 --- /dev/null +++ b/syn/examples/heapsize/example/src/main.rs @@ -0,0 +1,28 @@ +use heapsize::HeapSize; + +#[derive(HeapSize)] +struct Demo<'a, T: ?Sized> { +    a: Box<T>, +    b: u8, +    c: &'a str, +    d: String, +} + +fn main() { +    let demo = Demo { +        a: b"bytestring".to_vec().into_boxed_slice(), +        b: 255, +        c: "&'static str", +        d: "String".to_owned(), +    }; + +    // 10 + 0 + 0 + 6 = 16 +    println!( +        "heap size = {} + {} + {} + {} = {}", +        demo.a.heap_size_of_children(), +        demo.b.heap_size_of_children(), +        demo.c.heap_size_of_children(), +        demo.d.heap_size_of_children(), +        demo.heap_size_of_children() +    ); +}  | 
