面试题答案
一键面试在Rust单线程环境下,可以使用OnceCell
来初始化一个静态变量。OnceCell
允许在第一次访问时初始化值,并且确保初始化只发生一次。
-
引入依赖: 在
Cargo.toml
文件中添加如下依赖:once_cell = "1.17.0"
-
代码示例:
use once_cell::sync::OnceCell; static MY_STATIC: OnceCell<String> = OnceCell::new(); fn init_static() { MY_STATIC.set(String::from("Initial value")).unwrap(); } fn main() { init_static(); let value = MY_STATIC.get().unwrap(); println!("Value of MY_STATIC: {}", value); }
在上述代码中:
- 首先通过
use once_cell::sync::OnceCell;
引入OnceCell
。 - 定义了一个
MY_STATIC
的静态变量,类型为OnceCell<String>
,初始状态是未初始化的,通过OnceCell::new()
创建。 init_static
函数使用MY_STATIC.set
方法来设置静态变量的值,set
方法返回一个Result
,这里使用unwrap
简单处理错误,实际应用中可以更优雅地处理错误。- 在
main
函数中,先调用init_static
函数初始化静态变量,然后通过MY_STATIC.get()
获取静态变量的值并打印。