14个版本
0.1.13 | 2023年5月5日 |
---|---|
0.1.12 | 2023年5月5日 |
0.1.11 | 2023年2月14日 |
0.1.6 | 2022年8月18日 |
在数据库接口中排名492
21KB
508 行
此crate从OpenAPI 3.0定义生成Rust结构。
示例
Cargo.toml
[dependencies]
serde = "1.0.142"
openapi-struct-gen = "*"
[build-dependencies]
openapi-struct-gen = { version = "*", features = ["build"] }
build.rs
use openapi_struct_gen::generate;
fn main() {
generate(
format!(
"{}/{}",
std::env::var("CARGO_MANIFEST_DIR").unwrap(),
"api.yaml"
),
format!("{}/{}", std::env::var("OUT_DIR").unwrap(), "oapi.rs"),
Some(&["Clone", "Serialize", "Deserialize"]),
Some(&[("serde", "Serialize"), ("serde", "Deserialize")]),
Some(&[(r#"#[skip_serializing_none]"#, None)]),
Some(&[(r#"#[serde(rename_all = "camelCase")]"#, Some(&["Struct"]))]),
).unwrap();
}
第一个参数是oapi架构的路径。第二个是目标输出Rust文件。第三个是派生语句。第四个是使用语句,是对象路径和对象的元组的元组。第五个是在派生语句之前放置的注解。有时这些是必需的,例如serde_with。每个注解由一个元组组成 - 注解本身和可选的不需要此注解的结构体列表。第六个是在派生语句之后放置的注解。大多数注解都会这样应用。每个注解由一个元组组成 - 注解本身和可选的不需要此注解的结构体列表
代码
openapi_struct_gen::include!("oapi");
目标
- 从Open API 3.0定义生成Rust结构
非目标
- 生成Web服务器和客户端
依赖项
~0–690KB
~14K SLoC