serde/README.md

106 lines
3.1 KiB
Markdown
Raw Normal View History

2018-03-28 07:16:10 -05:00
# Serde   [![Build Status]][travis] [![Latest Version]][crates.io] [![Rustc Version 1.13+]][rustc]
2017-04-16 22:44:27 -05:00
[Build Status]: https://api.travis-ci.org/serde-rs/serde.svg?branch=master
[travis]: https://travis-ci.org/serde-rs/serde
[Latest Version]: https://img.shields.io/crates/v/serde.svg
[crates.io]: https://crates.io/crates/serde
2018-03-28 07:59:01 -05:00
[Rustc Version 1.13+]: https://img.shields.io/badge/rustc-1.13+-lightgray.svg
2018-03-28 07:16:10 -05:00
[rustc]: https://blog.rust-lang.org/2016/11/10/Rust-1.13.html
2014-09-07 03:30:58 -05:00
2016-08-18 00:01:48 -05:00
**Serde is a framework for *ser*ializing and *de*serializing Rust data structures efficiently and generically.**
2014-09-07 03:30:58 -05:00
2016-08-18 00:01:48 -05:00
---
2015-04-01 00:16:15 -05:00
2016-08-18 00:01:48 -05:00
You may be looking for:
2015-08-09 18:37:01 -05:00
2016-08-18 16:08:05 -05:00
- [An overview of Serde](https://serde.rs/)
- [Data formats supported by Serde](https://serde.rs/#data-formats)
- [Setting up `#[derive(Serialize, Deserialize)]`](https://serde.rs/codegen.html)
- [Examples](https://serde.rs/examples.html)
- [API documentation](https://docs.serde.rs/serde/)
2016-12-22 20:52:37 -06:00
- [Release notes](https://github.com/serde-rs/serde/releases)
2015-08-09 18:37:01 -05:00
2016-08-18 00:01:48 -05:00
## Serde in action
2017-10-31 23:47:30 -05:00
<details>
<summary>
Click to show Cargo.toml.
2018-05-27 21:07:46 -05:00
<a href="https://play.rust-lang.org/?gist=9003c5b88c1f4989941925d7190c6eec" target="_blank">Run this code in the playground.</a>
2017-10-31 23:47:30 -05:00
</summary>
```toml
[dependencies]
2017-10-31 23:47:30 -05:00
# The core APIs, including the Serialize and Deserialize traits. Always
# required when using Serde.
serde = "1.0"
2017-10-31 23:47:30 -05:00
# Support for #[derive(Serialize, Deserialize)]. Required if you want Serde
# to work for structs and enums defined in your crate.
serde_derive = "1.0"
2017-10-31 23:47:30 -05:00
# Each data format lives in its own crate; the sample code below uses JSON
# but you may be using a different one.
serde_json = "1.0"
```
2017-10-31 23:47:30 -05:00
</details>
<p></p>
```rust
2016-09-29 11:21:01 -05:00
#[macro_use]
extern crate serde_derive;
2017-04-08 15:53:13 -05:00
extern crate serde;
extern crate serde_json;
#[derive(Serialize, Deserialize, Debug)]
struct Point {
x: i32,
y: i32,
}
fn main() {
let point = Point { x: 1, y: 2 };
2016-08-18 00:01:48 -05:00
// Convert the Point to a JSON string.
let serialized = serde_json::to_string(&point).unwrap();
2015-04-01 23:59:37 -05:00
2016-08-18 00:01:48 -05:00
// Prints serialized = {"x":1,"y":2}
println!("serialized = {}", serialized);
2016-08-18 00:01:48 -05:00
// Convert the JSON string back to a Point.
let deserialized: Point = serde_json::from_str(&serialized).unwrap();
2016-08-18 00:01:48 -05:00
// Prints deserialized = Point { x: 1, y: 2 }
println!("deserialized = {:?}", deserialized);
}
2015-04-01 00:16:15 -05:00
```
2016-08-18 09:56:41 -05:00
## Getting help
2018-06-30 12:29:36 -05:00
Serde developers live in the #serde channel on [`irc.mozilla.org`][irc]. The
\#rust channel is also a good resource with generally faster response time but
less specific knowledge about Serde. If IRC is not your thing or you don't get a
good response, we are happy to respond to [GitHub issues][issues] as well.
[irc]: https://wiki.mozilla.org/IRC
2018-06-30 12:30:14 -05:00
[issues]: https://github.com/serde-rs/serde/issues/new/choose
2016-08-18 09:56:41 -05:00
2016-08-18 00:01:48 -05:00
## License
2016-08-18 00:01:48 -05:00
Serde is licensed under either of
2016-08-18 00:01:48 -05:00
* 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)
2016-08-18 00:01:48 -05:00
at your option.
2016-08-18 00:01:48 -05:00
### Contribution
2016-08-18 00:01:48 -05:00
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in Serde by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.