From 46d24a8e246828294af001f863c85965b95ea9fc Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sat, 26 Mar 2022 10:47:58 +0800 Subject: [PATCH] feat: add gob --- README.md | 4 +- __serialization/gob/Cargo.lock | 207 ++++++++++++++++++++++++++++++++ __serialization/gob/Cargo.toml | 13 ++ __serialization/gob/src/main.rs | 23 ++++ 4 files changed, 246 insertions(+), 1 deletion(-) create mode 100644 __serialization/gob/Cargo.lock create mode 100644 __serialization/gob/Cargo.toml create mode 100644 __serialization/gob/src/main.rs diff --git a/README.md b/README.md index caf9a81..2e30ad8 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ Project or files: │   └── goblin ├── __concurrent │   ├── arc-swap +│   ├── async_study │   ├── crossbeam_n_parking_lot │   ├── glommio │   ├── green-threads @@ -139,6 +140,7 @@ Project or files: │   ├── csv │   ├── encoding │   ├── flatbuffers +│   ├── gob │   ├── hjson │   ├── no_proto │   ├── prost @@ -213,7 +215,7 @@ Project or files: ├── vec.rs └── while.rs -183 directories, 33 files +185 directories, 33 files ``` diff --git a/__serialization/gob/Cargo.lock b/__serialization/gob/Cargo.lock new file mode 100644 index 0000000..26bf057 --- /dev/null +++ b/__serialization/gob/Cargo.lock @@ -0,0 +1,207 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +dependencies = [ + "byteorder", + "iovec", +] + +[[package]] +name = "gob" +version = "0.1.0" +dependencies = [ + "gob 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", + "serde_derive", + "serde_schema", + "serde_schema_derive", +] + +[[package]] +name = "gob" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb0747305a4fb19e72248a73bd1f47c887fcba035283f8ca29926725a1cff66" +dependencies = [ + "byteorder", + "bytes", + "iovec", + "lazy_static", + "owning_ref", + "safemem", + "serde", + "serde_derive", + "serde_schema", + "serde_schema_derive", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.121" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f" + +[[package]] +name = "owning_ref" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "proc-macro2" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b06e2f335f48d24442b35a19df506a835fb3547bc3c06ef27340da9acf5cae7" +dependencies = [ + "unicode-xid 0.1.0", +] + +[[package]] +name = "proc-macro2" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +dependencies = [ + "unicode-xid 0.2.2", +] + +[[package]] +name = "quote" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9949cfe66888ffe1d53e6ec9d9f3b70714083854be20fd5e271b232a017401e8" +dependencies = [ + "proc-macro2 0.3.8", +] + +[[package]] +name = "quote" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4af2ec4714533fcdf07e886f17025ace8b997b9ce51204ee69b6da831c3da57" +dependencies = [ + "proc-macro2 1.0.36", +] + +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + +[[package]] +name = "serde" +version = "1.0.136" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" + +[[package]] +name = "serde_derive" +version = "1.0.136" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.16", + "syn 1.0.89", +] + +[[package]] +name = "serde_derive_internals" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d30c4596450fd7bbda79ef15559683f9a79ac0193ea819db90000d7e1cae794" +dependencies = [ + "proc-macro2 0.3.8", + "syn 0.13.11", +] + +[[package]] +name = "serde_schema" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2894ca8303871f3cc304a3326d3abdc352b2965eb94a24188d213dc9c6241ee1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_schema_derive" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ff66a3ce5a7f8418b70acb13527ace32c2d784eb7ac7e208344c041a2ef00c7" +dependencies = [ + "quote 0.5.2", + "serde_derive_internals", + "syn 0.13.11", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "syn" +version = "0.13.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f9bf6292f3a61d2c716723fdb789a41bbe104168e6f496dc6497e531ea1b9b" +dependencies = [ + "proc-macro2 0.3.8", + "quote 0.5.2", + "unicode-xid 0.1.0", +] + +[[package]] +name = "syn" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea297be220d52398dcc07ce15a209fce436d361735ac1db700cab3b6cdfb9f54" +dependencies = [ + "proc-macro2 1.0.36", + "quote 1.0.16", + "unicode-xid 0.2.2", +] + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" diff --git a/__serialization/gob/Cargo.toml b/__serialization/gob/Cargo.toml new file mode 100644 index 0000000..8b70e51 --- /dev/null +++ b/__serialization/gob/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "gob" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +serde = "1.0.136" +serde_derive = "1.0.136" +gob = "0.1.0" +serde_schema = "0.0.1" +serde_schema_derive = "0.0.1" diff --git a/__serialization/gob/src/main.rs b/__serialization/gob/src/main.rs new file mode 100644 index 0000000..c3d78b7 --- /dev/null +++ b/__serialization/gob/src/main.rs @@ -0,0 +1,23 @@ +extern crate gob; +extern crate serde; +#[macro_use] +extern crate serde_derive; +extern crate serde_schema_derive; + +use gob::StreamSerializer; +use serde_schema_derive::SchemaSerialize; + +#[derive(Serialize, SchemaSerialize)] +struct Point { + #[serde(rename = "X")] + x: i64, + #[serde(rename = "Y")] + y: i64, +} + +fn main() { + let mut buffer = Vec::new(); + let mut stream = StreamSerializer::new_with_write(&mut buffer); + stream.serialize(&Point { x: 22, y: 33 }).unwrap(); + println!("{:?}", buffer); +}