{
x: usize,
y: usize
}
fn main() {
let s:S;
s.x=1;
s.y=2;
}
Все поля структуры в итоге заполяются без исключений. Поля — другие сложные структуры, default не сделать. Я юзаю Option, который выглядит не очень красиво.
Как я понял, это ишью раста, которое рано или поздно должны закрыть.
Пока только через MaybeUninit: https://doc.rust-lang.org/std/mem/union.MaybeUninit.html#initializing-a-struct-field-by-field
Это не ишью раста, это фича by design
ага читал про это. Думал может есть что-то более выразительное. Имхо опции в этом плане выглядят как-то поэстетичнее
Есть два стула: null и Option. В Rust выбрали Option
А, это не для FFI? Тогда действительно лучше другие варианты
use std::mem::MaybeUninit; #[derive(Debug)] struct S { x: usize, y: usize } fn main() { let s = unsafe { let mut s = MaybeUninit::<S>::uninit(); (*s.as_mut_ptr()).x = 1; (*s.as_mut_ptr()).y = 2; s.assume_init() }; println!("{:?}", s); } Куда уж выразительнее
уже разобрались. Кстати, для копи - можно
Обсуждают сегодня