1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2018 年 5 月 15 日 |
---|
#1337 在 数据库接口
23KB
587 行
Rust -> Swift IPC 数据方案转换器
Eonil
为 IPC 生成 Swift 数据类型和序列化代码,用于 Rust。
您在 Rust 代码中定义数据方案,然后运行此工具以生成对应的 Swift 端数据类型和序列化。您可以使用 serde
在 Rust 端进行序列化,并将生成 Swift 端的序列化代码。
中间消息将使用 JSON 编码。
如何使用
- 创建一个名为
to_swift
的根级模块。 - 在其中定义消息数据类型。
- 在 Cargo 仓库根目录下运行此工具。
源代码树中包含示例。
类型映射
Rust 到 Swift。
std::bool <-> Bool
std::i64 <-> Int64
std::f64 <-> Float64
std::String <-> String
std::option::Option <-> Optional
std::vec::Vec <-> Array
(enum) <-> (enum)
(struct) <-> (struct)
不支持任何其他类型,代码生成器将报错。
- 所有字段都必须是
pub
。 - 生成的 Swift 端序列化代码仅支持默认的
serde
行为。任何自定义都不会工作。因此 不要自定义serde
行为以使其在 Swift 端工作。 - 仅支持 JSON 容器协议。其他协议可能可以工作,如果可以在 Swift 端进行编码/解码,但尚未测试。
目标
- 可靠性。
- 简单性。
- 易用性。
限制
- 不支持
Box
类型。因此没有递归数据类型。 - 不支持
HashMap
(或任何其他关联集合)类型。
非目标
- 性能。首先让它工作。
- 除 JSON 以外的其他容器协议。
- 泛型
enum
或struct
类型。 - 嵌套模块。所有类型都将放置在 Swift 的扁平命名空间中。
贡献和许可证
初始版本由 Eonil 编写。此项目采用“MIT 许可证”。任何贡献都将与该项目采用相同的许可证。
依赖项
~3.5–4.5MB
~94K SLoC