#![feature(prelude_import)] #[prelude_import] use std::prelude::rust_2021::*; #[macro_use] extern crate std; use heapsz_derive::HeapSize; #[allow(dead_code)] #[path = "allowlisting.rs"] mod allowlisting { use heapsz_derive::HeapSize; pub struct FullAllow { #[heap_size] pub field_bool: bool, #[heap_size] pub field_u8: u8, #[heap_size] pub field_u16: u16, #[heap_size] pub field_u32: u32, #[heap_size] pub field_u64: u64, #[heap_size] pub field_u128: u128, #[heap_size] pub field_usize: usize, #[heap_size] pub field_f32: f32, #[heap_size] pub field_f64: f64, } impl ::heapsz::HeapSize for FullAllow { fn heap_size(&self) -> usize { 0 + ::heapsz::HeapSize::heap_size(&self.field_bool) + ::heapsz::HeapSize::heap_size(&self.field_u8) + ::heapsz::HeapSize::heap_size(&self.field_u16) + ::heapsz::HeapSize::heap_size(&self.field_u32) + ::heapsz::HeapSize::heap_size(&self.field_u64) + ::heapsz::HeapSize::heap_size(&self.field_u128) + ::heapsz::HeapSize::heap_size(&self.field_usize) + ::heapsz::HeapSize::heap_size(&self.field_f32) + ::heapsz::HeapSize::heap_size(&self.field_f64) } } pub struct PartialAllow { #[heap_size] pub field_bool: bool, #[heap_size] pub field_u8: u8, #[heap_size] pub field_u16: u16, #[heap_size] pub field_u32: u32, #[heap_size] pub field_u64: u64, pub field_u128: u128, pub field_usize: usize, pub field_f32: f32, pub field_f64: f64, } impl ::heapsz::HeapSize for PartialAllow { fn heap_size(&self) -> usize { 0 + ::heapsz::HeapSize::heap_size(&self.field_bool) + ::heapsz::HeapSize::heap_size(&self.field_u8) + ::heapsz::HeapSize::heap_size(&self.field_u16) + ::heapsz::HeapSize::heap_size(&self.field_u32) + ::heapsz::HeapSize::heap_size(&self.field_u64) } } fn main() {} } pub struct Unit; impl ::heapsz::HeapSize for Unit { fn heap_size(&self) -> usize { 0 } } pub struct Tuple1(#[heap_size] pub allowlisting::FullAllow); impl ::heapsz::HeapSize for Tuple1 { fn heap_size(&self) -> usize { 0 + ::heapsz::HeapSize::heap_size(&self.0) } } #[heap_size] pub struct Tuple2( pub allowlisting::FullAllow, #[heap_size(skip)] pub allowlisting::PartialAllow, ); impl ::heapsz::HeapSize for Tuple2 { fn heap_size(&self) -> usize { 0 + ::heapsz::HeapSize::heap_size(&self.0) } } fn main() {}