diff --git a/README.md b/README.md index 36868ae..fe9e24c 100644 --- a/README.md +++ b/README.md @@ -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 ``` diff --git a/__serialization/cbor/Cargo.lock b/__serialization/cbor/Cargo.lock new file mode 100644 index 0000000..0c0837d --- /dev/null +++ b/__serialization/cbor/Cargo.lock @@ -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" diff --git a/__serialization/cbor/Cargo.toml b/__serialization/cbor/Cargo.toml new file mode 100644 index 0000000..628ce09 --- /dev/null +++ b/__serialization/cbor/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "cbor" +version = "0.1.0" +authors = ["Hatter Jiang "] +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 = "*" + diff --git a/__serialization/cbor/src/main.rs b/__serialization/cbor/src/main.rs new file mode 100644 index 0000000..73e31e7 --- /dev/null +++ b/__serialization/cbor/src/main.rs @@ -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::>().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); +}