在Zig中编译时间哈希映射



以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方法。

最新更新