【发布时间】:2021-12-22 05:57:18
【问题描述】:
我想用 Rust 和 once_cell 来实现一些静态 const 结构实例,一个静态 const 向量包含这些静态结构实例。
示例代码如下:
use once_cell::sync::Lazy;
pub struct Kind {
name: String,
value: i32,
}
impl Kind {
pub fn new(name: &str, value: i32) -> Kind {
Kind {name: String::from(name), value}
}
}
const HYBRID: Lazy<Kind> = Lazy::new(|| Kind::new("a", 1));
const BOND: Lazy<Kind> = Lazy::new(|| Kind::new("b", 2));
// other instances
static KINDS: Lazy<Vec<Kind>> = Lazy::new(|| {
vec![
HYBRID,
BOND,
// other instances,
]
});
这是编译器错误:
error[E0308]: mismatched types
--> src/quant/fund/data/fund_info.rs:50:9
|
50 | HYBRID,
| ^^^^^^ expected struct `Kind`, found struct `once_cell::sync::Lazy`
|
= note: expected struct `Kind`
found struct `once_cell::sync::Lazy<Kind>`
我应该如何在Lazy 中获得真正的Kind?
【问题讨论】:
标签: rust synchronization lazy-initialization