我想更新一個枚舉變型,而移動舊的變體的場到新的無任何形式的克隆:更改枚舉變異而本場移動到新的變種
enum X {
X1(String),
X2(String),
}
fn increment_x(x: &mut X) {
match x {
&mut X::X1(s) => {
*x = X::X2(s);
}
&mut X::X2(s) => {
*x = X::X1(s);
}
}
}
這並不因爲工作我們不能從&mut X
移動s
。
樣實現一個enum X { X1, X2 }
使用struct S { variant: X, str: String }
等,這是一個簡單的例子請不要建議的事情,試想有許多變種在其他領域的,和想要一個字段從一個變體移動到另一個。
在String'的'的情況下,可以'MEM :: replace'一個空字符串到現場,並使用結果以形成新的變體。只需幾步。但是,這隻適用於類似空字符串的廉價形式。 –