我想实现一个命令行的工具,命令行上支持用户传入参数,在程序启动之后,通过判断这个参数来初始化一个全局的静态变量(是一个自定义的结构体),程序其他地方直接使用(可保证只读)该变量即可
pub static GLOBAL_STRUCT: MyStruct = MyStruct::default();
#[derive(Default)]
struct MyStruct {
name: String,
}
fn main() {
let num = 0; // 假设这个 num 是用户输入的(来自命令行参数)
// 如何修改全局的静态变量,我能保证除了这里,其他地方不会再修改
if num == 0 {
GLOBAL_STRUCT = ...;
} else {
GLOBAL_STRUCT = ...;
}
}
差不多我需求的最小代码是这样,求助各位大佬。。。帮帮小弟,应该如何修改(使用生态中的哪些工具)
1
共 4 条评论, 1 页
评论区
写评论你可以封装一个函数,用函数来读,unsafe只要你能保证是safe的,那就可以把他封装成safe用,前提是你确实能保证。
--
👇
Neutron3529: 可是
static mut
会导致使用全局变量时必须unsafe
啊漫天
unsafe
读一个常量,总觉得不应该是正解。--
👇
Aya0wind: 既然就一次初始化,而且以后都不改,那也不建议你用什么lazystatic,什么xxcell了,直接unsafe改就完了。
可是
static mut
会导致使用全局变量时必须unsafe
啊漫天
unsafe
读一个常量,总觉得不应该是正解。--
👇
Aya0wind: 既然就一次初始化,而且以后都不改,那也不建议你用什么lazystatic,什么xxcell了,直接unsafe改就完了。
既然就一次初始化,而且以后都不改,那也不建议你用什么lazystatic,什么xxcell了,直接unsafe改就完了。
once_cell = "1.10.0"