feat: add cbor

This commit is contained in:
2020-11-08 23:46:21 +08:00
parent c03b7d75a3
commit afb948c48c
4 changed files with 147 additions and 1 deletions

View File

@@ -13,6 +13,7 @@ Project or files:
├── __crypto
│   ├── btc-address
│   ├── crypto
│   ├── curve25519
│   ├── jsonwebtoken
│   ├── pwhash
│   ├── random
@@ -72,6 +73,7 @@ Project or files:
│   └── tantivy
├── __serialization
│   ├── bytes
│   ├── cbor
│   ├── csv
│   ├── encoding
│   ├── flatbuffers
@@ -130,7 +132,7 @@ Project or files:
├── vec.rs
└── while.rs
102 directories, 26 files
104 directories, 26 files
```

110
__serialization/cbor/Cargo.lock generated Normal file
View File

@@ -0,0 +1,110 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "byteorder"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855"
[[package]]
name = "cbor"
version = "0.1.0"
dependencies = [
"cbor 0.4.1",
"hex",
"serde",
"serde_cbor",
]
[[package]]
name = "cbor"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e56053652b4b5c0ded5ae6183c7cd547ad2dd6bcce149658bef052a4995533bd"
dependencies = [
"byteorder",
"rustc-serialize",
]
[[package]]
name = "half"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d36fab90f82edc3c747f9d438e06cf0a491055896f2a279638bb5beed6c40177"
[[package]]
name = "hex"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35"
[[package]]
name = "proc-macro2"
version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71"
dependencies = [
"unicode-xid",
]
[[package]]
name = "quote"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rustc-serialize"
version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"
[[package]]
name = "serde"
version = "1.0.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_cbor"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e18acfa2f90e8b735b2836ab8d538de304cbb6729a7360729ea5a895d15a622"
dependencies = [
"half",
"serde",
]
[[package]]
name = "serde_derive"
version = "1.0.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "syn"
version = "1.0.48"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc371affeffc477f42a221a1e4297aedcea33d47d19b61455588bd9d8f6b19ac"
dependencies = [
"proc-macro2",
"quote",
"unicode-xid",
]
[[package]]
name = "unicode-xid"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"

View File

@@ -0,0 +1,14 @@
[package]
name = "cbor"
version = "0.1.0"
authors = ["Hatter Jiang <jht5945@gmail.com>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
cbor = "0.4.1"
serde = { version = "1.0", features = ["derive"] }
serde_cbor = "0.11.1"
hex = "*"

View File

@@ -0,0 +1,20 @@
use cbor::{Decoder, Encoder};
fn main() {
let data = vec![('a', 1), ('b', 2), ('c', 3)];
println!("Encode/Decode by cbor");
let mut e = Encoder::from_memory();
e.encode(&data).unwrap();
let encoded_bytes = e.as_bytes();
println!("Encoded: {}", hex::encode(encoded_bytes));
let mut d = Decoder::from_bytes(e.as_bytes());
let items: Vec<(char, i32)> = d.decode().collect::<Result<_, _>>().unwrap();
println!("Decoded: {:?}", items);
println!("\nEncode/Decode by serde_cbor");
let encoded_bytes_by_serde = serde_cbor::to_vec(&data).unwrap();
println!("Encoded: {}", hex::encode(&encoded_bytes_by_serde));
let items: Vec<(char, u8)> = serde_cbor::from_slice(&encoded_bytes_by_serde).unwrap();
println!("Decoded: {:?}", items);
}