我想通过使用JSON配置文件定义常量值,如下所示:

enum E {
    ONE = get!(include_json!("a.json"), 0),
    TWO = get!(include_json!("a.json"), 1),
}

有没有办法在编译时解析JSON?

推荐答案

有多种方法可以在编译时解析json.按照"参与"的顺序:

  • 在构建过程中使用build.rs script生成源代码;当然,从技术上讲这是作弊,但很容易,
  • const函数与include_str!函数结合使用,需要每晚使用,我不确定编译时引擎目前是否足够强大,
  • 编写一个编译器插件,也就是include_str!,它还需要每晚,并且接口可能会随着编译器的每个版本而改变.

既然我建议你使用build.rsbuild.rs的方法.

Rust相关问答推荐

为什么是!为Rust中的RwLockReadGuard和RwLockWriteGuard实现的发送特征?

泛型属性比较

访问Rust中的隐藏变量

如何实现泛型枚举的`Serde::Desialize`特性

无法定义名为&new&的关联函数,该函数的第一个参数不是self

如何在递归数据 struct 中移动所有权时变异引用?

在IntoIter上调用.by_ref().Take().rev()时会发生什么情况

是否可以在不切换到下一个位置的情况下获得迭代器值:

`Pin`有没有不涉及不安全代码的目的?

如何执行数组文字的编译时串联?

当我try 使用 SKI 演算中的S I I实现递归时,为什么 Rust 会失败?

在 Rust 中,为什么 10 个字符的字符串的 size_of_val() 返回 24 个字节?

在 Rust 中忽略 None 值的正确样式

max(ctz(x), ctz(y)) 有更快的算法吗?

在 Rust 中使用 `SecTrustSettingsSetTrustSettings` 绑定导致 `errSecInternalComponent`

当你删除一个存在于堆栈中的值时,为什么 rust 不会抱怨

如何在 Rust 中将 UTF-8 十六进制值转换为 char?

无法把握借来的价值不够长寿,请解释

预期类型参数,发现不透明类型

在 Rust 中枚举字符串的最佳方式? (字符()与 as_bytes())