10个版本
0.1.9 | 2024年4月14日 |
---|---|
0.1.8 | 2024年4月14日 |
0.1.7 | 2023年12月27日 |
#168 in 构建工具
9KB
175 代码行
萤石
从Yaml/JSON指定的模式生成rust/typescript代码。
萤石的 模式定义代码由以下命令生成:
fluorite rust -i src/fluorite/definition.yaml -o ./src/definitions/
。
在Cargo项目中使用fluorite
请查看示例项目以获取详细信息。首先添加以下依赖项
[dependencies]
serde = "<serde-version>"
fluorite = "0.1"
derive-new = "0.6"
[build-dependencies]
fluorite_codegen = "0.1"
在build.rs
中使用fluorite
在Cargo构建过程中生成代码
fn main() {
let out_dir = std::env::var("OUT_DIR").unwrap();
fluorite::compile(&["fluorite/demo.yaml"], out_dir.as_str()).unwrap();
}
指导您的项目包含生成的代码,例如在您的库或主文件中
mod demo {
include!(concat!(env!("OUT_DIR"), "/demo/mod.rs"));
}
将fluorite
作为cli使用
$ fluorite --help
Generate rust/typescript codes from schemas specified by Yaml/JSON.
Usage: fluorite [OPTIONS] --output <OUTPUT>
Options:
-i, --inputs <INPUTS> Input definition files
-o, --output <OUTPUT> Output directory
-t, --target <TARGET> Target language [default: rust] [possible values: rust]
-h, --help Print help
-V, --version Print version
功能
- 支持Yaml模式定义,请参见此处示例
- 代码生成二进制程序
- 语言支持
- 在Cargo
build.rs
脚本中使用Rust代码生成 - Typescript代码生成
- CodeGen API以向
fluorite
添加更多语言支持
- 在Cargo
- 支持JSON模式定义(无计划)
模式定义功能
更多详细信息请参见definitions.rs。
- 用户定义类型
- 对象
- 枚举
- ObjectEnum:支持序列化/反序列化期间的多态类型
- 集合类型
- 列表
- 映射
- 原始类型
- 字符串
- 布尔值
- (WIP) 日期时间
- UIntX
- IntX
- 浮点数
- 支持可选字段
- 支持任何类型字段
依赖
~0.4–1MB
~22K SLoC