17 个版本
0.3.0 | 2024 年 3 月 29 日 |
---|---|
0.2.7 | 2023 年 12 月 18 日 |
0.1.8 | 2023 年 12 月 9 日 |
0.1.6 | 2023 年 11 月 26 日 |
0.1.5 | 2023 年 10 月 27 日 |
#132 在 过程宏 中
197 每月下载量
在 2 个 Crates 中使用(通过 launchpadlib)
125KB
3K SLoC
此 crate 包含一个 Web 应用描述语言 (WADL) 的解析器。
如果启用 codegen
功能,它还可以根据 WADL 文件生成基本的 Rust 绑定。
示例用法
简单解析 AST
let app: wadl::ast::Application = wadl::parse_file("1.0.wadl").unwrap();
println!("{:#}", app);
生成代码
创建一个生成 Rust 代码的 build.rs 文件
fn main() {
let config = wadl::codegen::Config {
// Set extra options here to influence code generation,
// e.g. to rename functions.
..Default::default()
};
let wadl = std::fs::read_to_string(
concat!(env!("CARGO_MANIFEST_DIR"), "/x.wadl")).unwrap();
let wadl_app = wadl::parse_string(wadl.as_str()).unwrap();
let code = wadl::codegen::generate(&wadl_app, &config);
let target_dir = std::path::PathBuf::from(std::env::var("OUT_DIR").unwrap())
.canonicalize()
.unwrap();
let generated = target_dir.join("generated");
std::fs::create_dir_all(&generated).unwrap();
let path = generated.join("x.wadl");
std::fs::write(path, code).unwrap();
}
然后,您可以从 Rust 代码中包含生成的代码
include!(concat!(env!("OUT_DIR"), "/generated/x.rs"));
依赖项
~4–16MB
~232K SLoC