macro_rules! update_field {
($ptr:expr => $field:tt <- $val:expr; $set:expr , $idx:expr) => { ... };
($ptr:expr => $field:tt <- $val:expr; $perm:expr) => { ... };
($ptr:expr => $field:tt += $val:expr; $perm:expr) => { ... };
($ptr:expr => $field:tt -= $val:expr; $perm:expr) => { ... };
}