use with::{remote::*, *};

#[allow(dead_code)]
#[path = "with.rs"]
mod with;

#[derive(heapsz_derive::HeapSize)]
pub enum Enum {
    A(#[heap_size] usize),
    B(#[heap_size] usize, usize),
    C(#[heap_size(with = "remote_inner_heap_size")] Inner, usize),
    D {
        #[heap_size(with = "remote_inner_heap_size")]
        inner: Inner,
        #[heap_size]
        size1: usize,
        size2: usize,
    },
}

#[derive(heapsz_derive::HeapSize)]
#[heap_size]
pub enum All {
    A(usize),
    B(usize, usize),
    C(#[heap_size(with = "remote_inner_heap_size")] Inner, usize),
    D {
        #[heap_size(with = "remote_inner_heap_size")]
        inner: Inner,
        size1: usize,
        size2: usize,
    },
}

#[derive(heapsz_derive::HeapSize)]
#[heap_size]
pub enum Skip {
    A(#[heap_size(skip)] Inner, usize),
    B {
        #[heap_size(skip)]
        inner: Inner,
        size1: usize,
        size2: usize,
    },
    #[heap_size(skip)]
    C {
        inner: Inner,
    },
}

#[derive(heapsz_derive::HeapSize)]
#[heap_size]
pub enum Empty {}

#[derive(heapsz_derive::HeapSize)]
#[heap_size]
pub enum Numbers {
    A = 1,
    B = 2,
}

fn main() {}