Поскольку self
относится к типу &mut Self
, этого достаточно для сопоставления с самим собой, при этом пропуская ref
полностью.Либо разыменование его с помощью *self
, либо добавление &
к ответной руке вызовет нежелательный ход.
fn ref_mut(&mut self) -> &mut i32 {
match self {
OwnBox(i) => i,
}
}
Однако для таких новых типов, как этот, достаточно было бы &mut self.0
.
Это благодаря RFC 2005 - Эргономика соответствия .