我想在代码生成中使用serde,将一些复杂的嵌套对象迭代嵌入到生成的代码中。
除了以下形式,我不希望serde产生任何其他东西:
const FOO: Foo = Foo {
bar: 0,
baz: Baz {
quux: 1
}
};(也许是由我提供const FOO: Foo =。)
Ron似乎是要使用的机箱,但它看起来并没有为文字值生成Rust语法。
我是不是误解了它的目的?
发布于 2020-08-04 16:19:40
要真正做到你所要求的,你需要write a custom Serde serializer。要让所有细节都正确,还需要做一些工作。可以使用proc_macro2::Literal的Display实现将大多数文字(例如字符串、字符和数字)序列化为有效的生锈文字,该实现将负责转义特殊字符、在需要时使用.0作为浮点数的后缀以及类似的细节。但是,看起来实现结构的序列化程序将取决于您。
在Rust中,最常见的代码生成方法是writing a proc macro,并使用quote crate发出源代码。我对您的用例了解不足,无法判断这是否是解决您的问题的有效方法。
https://stackoverflow.com/questions/63241508
复制相似问题