macro_rules! define_layout {
($name: ident, $endianness: ident, {$($field_name: ident : $field_type: ty),* $(,)?}) => { ... };
(_impl_fields $endianness: ty, $offset_accumulator: expr, {}) => { ... };
(_impl_fields $endianness: ty, $offset_accumulator: expr, {$name: ident : $type: ty $(, $name_tail: ident : $type_tail: ty)*}) => { ... };
(_impl_view_asref {}) => { ... };
(_impl_view_asref {$name: ident $(, $name_tail: ident)*}) => { ... };
(_impl_view_asmut {}) => { ... };
(_impl_view_asmut {$name: ident $(, $name_tail: ident)*}) => { ... };
(_impl_view_into {}) => { ... };
(_impl_view_into {$name: ident $(, $name_tail: ident)*}) => { ... };
}