поля без клонирования этого толстого поля и без перечисления всех полей?
MyStruct {
records: vec![],
..my_struct_with_huge_number_of_records.clone()
}
в этом случае, к сожалению, Rust вызывает .clone для всех полей рекурсивно и только потом переприсваивает records (https://rust.godbolt.org/z/p9mSun)
let mut swap = Vec::new(); std::mem::swap(&mut my_struct_with_huge_number_of_records.records, &mut swap); let my_other_struct_with_huge_number_of_records = my_struct_with_huge_number_of_records.clone(); std::mem::swap(&mut my_struct_with_huge_number_of_records.records, &mut swap);
Обсуждают сегодня