以Rust库lazy_static
为例:
use lazy_static::lazy_static;
use std::collections::HashMap;
lazy_static! {
static ref HASHMAP: HashMap<u32, &'static str> = {
let mut m = HashMap::new();
m.insert(0, "foo");
m.insert(1, "bar");
m.insert(2, "baz");
m
};
static ref COUNT: usize = HASHMAP.len();
static ref NUMBER: u32 = times_two(21);
}
如何在Zig中做到这一点?
我试过这个,这是唯一对我有意义的事情:
const std = @import("std");
pub fn main() void {
comptime var h = std.StringHashMap(i32).init(std.testing.allocator);
h.put("hi", 5) catch {};
std.debug.print("{}", .{h});
}
但这是错误的。
在Zig中有可能做到这一点吗?
这似乎是在标准库中实现的(多亏了Reddit的这篇文章)
可通过std.ComptimeStringMap
使用
然而,这似乎不支持任何动态插入,因为没有insert
方法。