diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /third_party/rust/serde_cbor/README.md | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/serde_cbor/README.md')
-rw-r--r-- | third_party/rust/serde_cbor/README.md | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/third_party/rust/serde_cbor/README.md b/third_party/rust/serde_cbor/README.md new file mode 100644 index 0000000000..b49e8adbc3 --- /dev/null +++ b/third_party/rust/serde_cbor/README.md @@ -0,0 +1,97 @@ +# Serde CBOR +[![Build Status](https://travis-ci.org/pyfisch/cbor.svg?branch=master)](https://travis-ci.org/pyfisch/cbor) +[![Crates.io](https://img.shields.io/crates/v/serde_cbor.svg)](https://crates.io/crates/serde_cbor) +[![Documentation](https://docs.rs/serde_cbor/badge.svg)](https://docs.rs/serde_cbor) + +## PROJECT IS ARCHIVED + +After almost 6 years it is time to retire this crate. +This implementation of CBOR for serde is used in hundreds of projects with widely differing needs. +Besides the standard features it contains code for no-std environments, a packed encoding and CBOR tags. +However while these features are useful to many people they sometimes interact poorly with each others and with optional features of serde itself. +Because I don't use the crate myself and because of the potential for new errors I have been reluctant to accept any changes or additional features for the crate. +Since this situation is unlikely to change anytime soon and no one else stepped up to maintain this crate I am archiving the repository today. +If the crate works for you there is no need to switch to another implementation. +However if you encounter problems or for new projects I recommend you take a look at these crates: + +* [ciborium](https://crates.io/crates/ciborium) +* [minicbor](https://crates.io/crates/minicbor) + +~~ Pyfisch, August 2021 + + + +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. + +[RFC 7049]: https://tools.ietf.org/html/rfc7049 +[Serde]: https://github.com/serde-rs/serde + +## Usage + +Serde CBOR supports Rust 1.40 and up. Add this to your `Cargo.toml`: +```toml +[dependencies] +serde_cbor = "0.11.2" +``` + +Storing and loading Rust types is easy and requires only +minimal modifications to the program code. + +```rust +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. + +## License +Licensed under either of + + * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) + * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) + +at your option. + +### Contribution +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. |