2 个版本
0.1.1 | 2024 年 6 月 13 日 |
---|---|
0.1.0 | 2024 年 6 月 2 日 |
#838 in 开发工具
80 每月下载次数
18KB
392 行
quick-type-schema
quick-type-schema
是一个简单的库,它通过将您的 Rust 类型转换为 JSON 架构,然后通过 quicktype.io 运行,从而将您的类型转换为任何语言。该库是为 bubbel-backend
创建的,现已被改用于通用场景!
为了100%明确,这个库是 quicktype.io 的包装器。另外,并非所有情况和选项都已测试/可用。请报告您遇到的所有问题。
先决条件
由于这个库是 quicktype 的包装器,您需要安装 npx
或 quicktype
。后者启动速度更快。
另外,您还需要从 schema-rs
中导出您的类型所需的 JsonSchema
特性。
使用方法
添加到 Cargo.toml
[dependencies]
quick-type-schema = "0.1"
use quick_type_schema::{CodegenContext, Language};
// quicktype cli override arguments can be explicitly added here.
// These overrides even affect `Language` passed in `codegen.finish`
// Ex: `Some(&["-l", "typescript", "--just-types"])`
let mut codegen = CodegenContext::new(None);
// Add a type that has derived `JsonSchema`
codegen.add_type::<MyStruct>();
// Add your own json schema
codegen.add_schema("{ ... }");
codegen.finish(Language::Typescript);
您可以将这些添加到构建过程中,但由于 quicktype 启动速度慢且缺乏缓存,这强烈不推荐。
语言支持
quick-type-schema
几乎支持 quicktype 支持的所有语言。然而,由于不兼容性或复杂性(显著的包括 C、C++、Java、Kotlin、Objective-C 和 Scala3),一些语言已被排除。对于这些语言,请使用覆盖参数并参考 quicktype 命令行界面 - quicktype --help
。以下是支持的语言
Typescript
JsonSchema
CSharp
+via Newton Soft
+via System.Text.Json
Crystal
Dart
Elm
Go
Haskell
Python
+via v3.5
+via v3.6
+via v3.7
Ruby
Rust
Smithy
Swift
依赖项
~140–450KB