commit | b0a4346bb49afb7963339b82827ee6cf9f4d3645 | [log] [tgz] |
---|---|---|
author | Bob Badour <[email protected]> | Tue Mar 23 15:15:01 2021 +0000 |
committer | Automerger Merge Worker <[email protected]> | Tue Mar 23 15:15:01 2021 +0000 |
tree | edc98c3f5b73937786ca2d28d5642b38ac420ae8 | |
parent | c49fd4eaaa9fb394c882846e2cb0963bc4b2e57c [diff] | |
parent | 0d50d65d3c6c8e80cbb699d2c4edc30277b7bf57 [diff] |
[LSC] Add LOCAL_LICENSE_KINDS to external/rust/crates/serde_cbor am: 7618641a0b am: cbfe8be4b9 am: 0d50d65d3c Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/serde_cbor/+/1649596 Change-Id: I0e75a169a4fd58f7fa74323204e191669b71c7ee
This crate implements the Concise Binary Object Representation from RFC 7049. It builds on Serde, the generic serialization framework for Rust. CBOR provides a binary encoding for a superset of the JSON data model that is small and very fast to parse.
Serde CBOR supports Rust 1.40 and up. Add this to your Cargo.toml
:
[dependencies] serde_cbor = "0.11.1"
Storing and loading Rust types is easy and requires only minimal modifications to the program code.
use serde_derive::{Deserialize, Serialize}; use std::error::Error; use std::fs::File; // Types annotated with `Serialize` can be stored as CBOR. // To be able to load them again add `Deserialize`. #[derive(Debug, Serialize, Deserialize)] struct Mascot { name: String, species: String, year_of_birth: u32, } fn main() -> Result<(), Box<dyn Error>> { let ferris = Mascot { name: "Ferris".to_owned(), species: "crab".to_owned(), year_of_birth: 2015, }; let ferris_file = File::create("examples/ferris.cbor")?; // Write Ferris to the given file. // Instead of a file you can use any type that implements `io::Write` // like a HTTP body, database connection etc. serde_cbor::to_writer(ferris_file, &ferris)?; let tux_file = File::open("examples/tux.cbor")?; // Load Tux from a file. // Serde CBOR performs roundtrip serialization meaning that // the data will not change in any way. let tux: Mascot = serde_cbor::from_reader(tux_file)?; println!("{:?}", tux); // prints: Mascot { name: "Tux", species: "penguin", year_of_birth: 1996 } Ok(()) }
There are a lot of options available to customize the format. To operate on untyped CBOR values have a look at the Value
type.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.