在Rust中,我试图声明一个自定义结构的静态实例。
因为默认情况下,除了const之外,我不能分配其他值,所以我尝试使用lazy_static。
这是我的自定义结构:
pub struct MyStruct {
field1: String,
field2: String,
field3: u32
}
以下是我尝试实例化它的方式:
lazy_static! {
static ref LATEST_STATE: MyStruct = {
field1: "".to_string(),
field2: "".to_string(),
field3: 0
};
}
此代码编译时没有出现以下错误:
error: expected type, found `""``
我错过了什么?
试试这个:
lazy_static! {
static ref LATEST_STATE: MyStruct = MyStruct {
// ^^^^^^^^
field1: "".to_string(),
field2: "".to_string(),
field3: 0
};
}
Lazy_static初始化与普通Rust相同。let mystruct: MyStruct = { field: "", ... };
不会编译。您需要在{}
之前输入typename,否则它将被解释为代码块。
尝试用String::from("")
实例化而不是"".to_string()
。