2017-02-11 23 views
9

我想通過使用JSON配置文件,像這樣的東西來定義常量值:Can Rust宏能解析JSON嗎?

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

有什麼辦法在編譯時解析JSON?

+0

對不起,我注意到我錯誤的枚舉定義,所以修改了定義。 – kriw

+0

好!那麼我認爲'build.rs'方法是可行的。儘可能在最小的文件中分離這個定義,並且你很好。 –

回答

8

在編譯時有多種方法可以解析json。按照「參與」的順序:

  • 使用build.rs script在構建期間生成您的源代碼;這是技術上的欺騙,當然,但它很容易,用
  • 一個const功能結合的include_str!,它需要每天晚上,我不知道編譯時發動機是否在當時是足夠強大,
  • 編寫一個編譯器插件,這就是include_str!,它也需要每晚編譯插件,並且每個版本的編譯器可能會改變接口。

因此,我建議您現在使用build.rs腳本方法,因爲它既簡單又穩定。