7 个版本
0.8.0 | 2023年3月7日 |
---|---|
0.7.4 | 2021年3月18日 |
0.7.3 | 2020年7月31日 |
0.7.2 | 2020年5月9日 |
0.1.0 | 2019年3月24日 |
#988 在 编码
689 每月下载量
用于 rusty_vault
35KB
680 行
serde_asn1_der
欢迎使用 serde_asn1_der
🎉
此包实现了基于 asn1_der
的 serde
的 ASN.1-DER 子集。
支持以下类型
bool
:ASN.1-BOOLEAN 类型u8
、u16
、u32
、u64
、u128
、usize
:ASN.1-INTEGER 类型()
、Option
:ASN.1-NULL 类型&[u8]
、Vec<u8>
:ASN.1-OctetString 类型&str
、String
:ASN.1-UTF8String 类型- 以及由这些类型组合而成的所有序列类型
使用 serde_derive
包可以为所有非原始元素派生 Serialize
和 Deserialize
use serde_derive::{ Serialize, Deserialize };
#[derive(Serialize, Deserialize)] // Now our struct supports all DER-conversion-traits
struct Address {
street: String,
house_number: u128,
postal_code: u128,
state: String,
country: String
}
#[derive(Serialize, Deserialize)] // Now our struct supports all DER-conversion-traits too
struct Customer {
name: String,
e_mail_address: String,
postal_address: Address
}
示例
use serde_asn1_der::{ to_vec, from_bytes };
use serde_derive::{ Serialize, Deserialize };
#[derive(Serialize, Deserialize)]
struct TestStruct {
number: u8,
#[serde(with = "serde_bytes")]
vec: Vec<u8>,
tuple: (usize, ())
}
fn main() {
let plain = TestStruct{ number: 7, vec: b"Testolope".to_vec(), tuple: (4, ()) };
let serialized = to_vec(&plain).unwrap();
let deserialized: TestStruct = from_bytes(&serialized).unwrap();
}
AnyObject
此包还提供了一种类型擦除的 AnyObject
特性,允许您使用 Box<dyn AnyObject>
而不是特定类型。要启用 AnyObject
,请使用 "any"
特性。
依赖项
~170–440KB