Следующий код не может быть скомпилирован, потому что MutRef не Copy
. Невозможно сделать копию, потому что &'a mut i32
не является копией. Есть ли способ придать MutRef семантику, аналогичную &'a mut i32
?
Мотивация для этого заключается в возможности упаковки большого набора параметров функции в структуру, чтобы их можно было передавать в виде группы вместо необходимостидля индивидуальной передачи.
struct MutRef<'a> {
v: &'a mut i32
}
fn wrapper_use(s: MutRef) {
}
fn raw_use(s: &mut i32) {
}
fn raw_ref() {
let mut s: i32 = 9;
let q = &mut s;
raw_use(q);
raw_use(q);
}
fn wrapper() {
let mut s: i32 = 9;
let q = MutRef{ v: &mut s };
wrapper_use(q);
wrapper_use(q);
}