macro_rules! use_self {
    (
        impl $ty:ident {
            fn func(&$this:ident) {
                [fields($($field:ident)*)]
            }
        }
    ) => (
        impl  $ty {
            fn func(&$this) {
                let $ty { $($field),* } = $this;
            }
        }
    )
}