15 个版本
0.2.9 | 2021 年 7 月 15 日 |
---|---|
0.2.8 | 2021 年 7 月 15 日 |
0.2.6 | 2021 年 6 月 21 日 |
0.1.5 | 2021 年 6 月 16 日 |
#17 in #xdr
335KB
8K SLoC
已弃用
该包已弃用,现在它是 Substrate Stellar SDK 的一部分。
Stellar XDR 类型的编解码器
此仓库生成用于 Stellar 中所有 XDR 类型的 Rust 解码器和编码器。代码是通过 Substrate Stellar XDR 生成器 生成的。
用法
这是解码和编码 Stellar 交易的示例代码。
use substrate_stellar_xdr::{xdr, xdr_codec::XdrCodec};
const ENVELOPE: &str =
"AAAAAgAAAAC9xFYU1gQJeH4apEfzJkMCsW5DL4GEWRpyVjQHOlWVzgAAAZA\
CGsQoAAQytgAAAAAAAAAAAAAAAgAAAAAAAAADAAAAAVhMUEcAAAAAxxJMrxQQOx9raxDm3\
lINsLvksi7tj1BCQXzWTtqigbgAAAAAAAAAAAbK5N8CprKDAExLQAAAAAAAAAAAAAAAAAA\
AAAMAAAAAAAAAAVhMUEcAAAAAxxJMrxQQOx9raxDm3lINsLvksi7tj1BCQXzWTtqigbgAA\
AAAlV2+xQAEaBMAJiWgAAAAAAAAAAAAAAAAAAAAATpVlc4AAABAaX11e1dGcDkXrFT5s3Q\
N6x3v4kQqJ/1VIjqO00y6OStd70/aYiXR35e4289RvmBTudJ5Q05PaRsD8p1qa17VDQ==";
fn main() {
let envelope = xdr::TransactionEnvelope::from_base64_xdr(ENVELOPE).unwrap();
println!("{:#?}", envelope);
assert_eq!(xdr, envelope.to_xdr());
}
所有 Stellar XDR 类型都在 xdr
模块中定义。每个类型都实现了 xdr_codex::XdrCodec
特性,该特性定义了以下两个有用的方法
fn to_xdr(&self) -> Vec<u8>
: 以二进制 XDR 编码fn to_base64_xdr(&self) -> Vec<u8>
: 以 XDR 编码,然后以 base64 编码结果from_xdr<T: AsRef<[u8]>>(input: T) -> Result<Self, DecodeError>
: 解码二进制 XDRfrom_base64_xdr<T: AsRef<[u8]>>(input: T) -> Result<Self, DecodeError>
:将base64解码,然后将结果解码为XDR
特性
all-types
:当指定时,将生成所有类型——否则仅生成类型TransactionEnvelope
、TransactionResult
、TransactionMeta
、EnvelopeType
和TransactionSignaturePayload
的依赖树中的类型
依赖
~250KB