3个不稳定版本
0.2.0 | 2020年2月28日 |
---|---|
0.1.1 | 2019年9月25日 |
0.1.0 | 2019年9月8日 |
#1055 in 编码
56 个月下载量
在 5 个crate中使用(通过 keybase-protocol)
35KB
1K SLoC
AVDL Rust代码生成器(带serde支持)
一个将AVDL声明转换为Rust类型并支持serde的库。
将这个
record Thread {
@jsonkey("messages")
array<Message> messages;
@jsonkey("pagination")
union { null, Pagination } pagination;
@jsonkey("offline")
boolean offline;
@jsonkey("identify_failures")
array<keybase1.TLFIdentifyFailure> identifyFailures;
@jsonkey("ratelimits")
array<RateLimitRes> rateLimits;
}
转换为这个
#[derive(Serialize, Deserialize, Debug)]
pub struct Thread {
#[serde(rename = "messages")]
#[serde(default)]
pub messages: Option<Vec<Message>>,
#[serde(rename = "pagination")]
pub pagination: Option<Pagination>,
#[serde(rename = "offline")]
#[serde(default)]
pub offline: Option<bool>,
#[serde(rename = "identify_failures")]
#[serde(default)]
pub identifyFailures: Option<Vec<keybase1::TLFIdentifyFailure>>,
#[serde(rename = "ratelimits")]
#[serde(default)]
pub rateLimits: Option<Vec<RateLimitRes>>,
}
为什么?
主要是为了将Keybase在其协议中定义的类型导出到Rust中使用。
用法
查看 to_rust::build_rust_code_from_avdl
。
依赖项
~4.5–6MB
~112K SLoC