在C语言中,我可以使用一个未初始化的结构体。我在Rust中尝试了这段代码:
但是它产生了编译错误:
为什么在C中允许这样做,但在Rust中会出现错误?
struct User {
username: String,
email: String,
sign_in_count: u64,
active: bool,
}
fn main(){
let mut user1: User;
user1.active = false;
}
但是它产生了编译错误:
error[E0381]: assign to part of possibly-uninitialized variable: `user1`
--> src/main.rs:10:5
|
10 | user1.active = false;
| ^^^^^^^^^^^^^^^^^^^^ use of possibly-uninitialized `user1`
为什么在C中允许这样做,但在Rust中会出现错误?
let mut user1 = User
或者let mut user1 = User(user, email, login_count, active)
。可以参考这个链接中的示例。 - undefinedstd::mem::MaybeUninit
的领域以非正常的方式进行初始化。即使如此,如果你没有正确操作,仍然会出现未定义行为。 - undefined