5个不稳定版本
使用旧的Rust 2015
0.3.1 | 2017年8月8日 |
---|---|
0.3.0 | 2017年8月5日 |
0.2.1 | 2017年8月3日 |
0.2.0 | 2017年8月1日 |
0.1.0 | 2017年7月30日 |
2848 在 Rust模式
每月25次 下载
用于 purescript_waterslide_der…
16KB
379 行
purescript-waterslide-rs
注意:此库目前未维护。如果您想对此做些什么,请联系@tomhoule。
您是否希望能够在Rust后端和Purescript应用程序之间共享您自己的数据类型定义?现在您可以了!
Waterslide可以从Rust的结构体和枚举中生成Purescript类型定义。它适用于稳定的Rust。
基本用法
- 通过在结构体和枚举上使用
#[derive(AsPursType)]
或手动实现AsPursType
(如果您有自定义序列化方案)来派生Purescript表示。 - 使用
purs_module!
宏定义一个模块(例如purs_module!("Data.Dogs".to_string() ; Dachsund, ChowChow, Mutt<Void, Void>)
)。 - 使用
PursModule
的Display
实现将模块打印到标准输出或直接写入文件。
您可能想要将模块生成代码放入单独的二进制文件中,这可以通过Cargo轻松实现。
重要:在Purescript一侧,您想要使用Data.Argonaut.Generic.Aeson
编解码器来编码和解码JSON类型。
重要*:在Rust端,您的枚举必须使用以下注解:#[serde(tag = "tag", content = "contents")]
这些限制将在未来通过开发与serde_json
默认值相匹配的Argonaut编解码器而得到缓解。
要运行代码,请查看基本示例。测试也提供了许多使用示例,特别是对于泛型类型。
特性
- 结构和枚举定义,包括元组结构。
- 原始类型和标准库集合(如
Vec
)的默认实现。 - 支持泛型类型(例如
Alternative<T, U>
,Paginated<T>
等)。 - 带有导入的整个模块生成。
- 您可以通过手动实现
AsPursType
(不稳定接口)来定义自定义表示。
路线图
未来几周内我想添加的功能(不分先后顺序)
- 更多的端到端测试,以确保serde_json和argonaut之间的JSON表示兼容。
- 更好的文档和示例。
致谢
这个库的想法来自Haskell的purescript-bridge包。
贡献
那将太棒了!目前还没有特定的pull请求指南(可能在未来会有)。我们遵循Rust行为准则。
许可证
以下任一许可证下授权:
- Apache许可证版本2.0(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,任何有意提交以包含在作品中的贡献,均将根据上述方式双授权,无需任何额外条款或条件。
lib.rs
:
这个crate定义了将Rust数据类型转换为Purescript所需的数据类型。大多数用户只需要使用purescript_waterslide_derive
crate derive AsPursType
,并使用purs_module!
宏来生成模块。
依赖
~0–340KB