macro_rules! field_map_fn_impl {
(fn [$dtype1:tt](self, $field:ident) { $($body:tt)* } $($rest:tt)*) => { ... };
(fn [$dtype1:tt, $dtype2:tt](self, $field:ident) { $($body:tt)* } $($rest:tt)*) => { ... };
(fn [$dtype1:tt, $dtype2:tt, $dtype3:tt](self, $field:ident) { $($body:tt)* } $($rest:tt)*) => { ... };
(fn [$dtype1:tt, $dtype2:tt, $dtype3:tt, $dtype4:tt](self, $field:ident)
{ $($body:tt)* } $($rest:tt)*) => { ... };
(fn [$dtype1:tt, $dtype2:tt, $dtype3:tt, $dtype4:tt, $dtype5:tt](self, $field:ident)
{ $($body:tt)* }) => { ... };
(fn all(self, $field:ident) { $($body:tt)* }) => { ... };
(fn unsigned(self, $field:ident) { $($body:tt)* } $($rest:tt)*) => { ... };
(fn signed(self, $field:ident) { $($body:tt)* } $($rest:tt)*) => { ... };
(fn text(self, $field:ident) { $($body:tt)* } $($rest:tt)*) => { ... };
(fn boolean(self, $field:ident) { $($body:tt)* } $($rest:tt)*) => { ... };
(fn float(self, $field:ident) { $($body:tt)* } $($rest:tt)*) => { ... };
() => { ... };
}