mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-15 16:41:01 +00:00
Merge pull request #2964 from dtolnay/serdecoredoc
Update documentation of serde_core
This commit is contained in:
+2
-3
@@ -71,7 +71,6 @@ alloc = ["serde_core/alloc"]
|
|||||||
# Be sure that this is what you want before enabling this feature.
|
# Be sure that this is what you want before enabling this feature.
|
||||||
rc = ["serde_core/rc"]
|
rc = ["serde_core/rc"]
|
||||||
|
|
||||||
# Provide impls for Result<T, E>. Enabling these impls allows for serialization
|
# Provide impls for Result<T, E>. Convenient in some contexts but can lead to
|
||||||
# and deserialization of Result types, which may be useful in certain contexts
|
# confusion if ? or unwrap are used incautiously.
|
||||||
# but could lead to confusion if ? or unwrap are overused.
|
|
||||||
result = ["serde_core/result"]
|
result = ["serde_core/result"]
|
||||||
|
|||||||
@@ -4,13 +4,12 @@ version = "1.0.219"
|
|||||||
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
|
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
categories = ["encoding", "no-std", "no-std::no-alloc"]
|
categories = ["encoding", "no-std", "no-std::no-alloc"]
|
||||||
description = "Core functionalities and abstractions for the Serde serialization/deserialization framework"
|
description = "Serde traits only, with no support for derive -- use the `serde` crate instead"
|
||||||
documentation = "https://docs.rs/serde_core"
|
documentation = "https://docs.rs/serde_core"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
homepage = "https://serde.rs"
|
homepage = "https://serde.rs"
|
||||||
keywords = ["serde", "serialization", "no_std"]
|
keywords = ["serde", "serialization", "no_std"]
|
||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
readme = "crates-io.md"
|
|
||||||
repository = "https://github.com/serde-rs/serde"
|
repository = "https://github.com/serde-rs/serde"
|
||||||
rust-version = "1.56"
|
rust-version = "1.56"
|
||||||
|
|
||||||
@@ -56,7 +55,6 @@ alloc = []
|
|||||||
# Be sure that this is what you want before enabling this feature.
|
# Be sure that this is what you want before enabling this feature.
|
||||||
rc = []
|
rc = []
|
||||||
|
|
||||||
# Provide impls for Result<T, E>. Enabling these impls allows for serialization
|
# Provide impls for Result<T, E>. Convenient in some contexts but can lead to
|
||||||
# and deserialization of Result types, which may be useful in certain contexts
|
# confusion if ? or unwrap are used incautiously.
|
||||||
# but could lead to confusion if ? or unwrap are overused.
|
|
||||||
result = []
|
result = []
|
||||||
|
|||||||
+9
-111
@@ -1,114 +1,12 @@
|
|||||||
# Serde   [![Build Status]][actions] [![Latest Version]][crates.io] [![serde msrv]][Rust 1.56] [![serde_derive msrv]][Rust 1.61]
|
The `serde_core` crate contains Serde's trait definitions with **no support for
|
||||||
|
#\[derive()\]**.
|
||||||
|
|
||||||
[Build Status]: https://img.shields.io/github/actions/workflow/status/serde-rs/serde/ci.yml?branch=master
|
In crates that derive an implementation of `Serialize` or `Deserialize`, you
|
||||||
[actions]: https://github.com/serde-rs/serde/actions?query=branch%3Amaster
|
must depend on the [`serde`] crate, not `serde_core`.
|
||||||
[Latest Version]: https://img.shields.io/crates/v/serde.svg
|
|
||||||
[crates.io]: https://crates.io/crates/serde
|
|
||||||
[serde msrv]: https://img.shields.io/crates/msrv/serde.svg?label=serde%20msrv&color=lightgray
|
|
||||||
[serde_derive msrv]: https://img.shields.io/crates/msrv/serde_derive.svg?label=serde_derive%20msrv&color=lightgray
|
|
||||||
[Rust 1.56]: https://blog.rust-lang.org/2021/10/21/Rust-1.56.0.html
|
|
||||||
[Rust 1.61]: https://blog.rust-lang.org/2022/05/19/Rust-1.61.0.html
|
|
||||||
|
|
||||||
**Serde is a framework for *ser*ializing and *de*serializing Rust data structures efficiently and generically.**
|
In crates that handwrite implementations of Serde traits, or only use them as
|
||||||
|
trait bounds, depending on `serde_core` is permitted. But `serde` re-exports all
|
||||||
|
of these traits and can be used for this use case too. If in doubt, disregard
|
||||||
|
`serde_core` and always use `serde`.
|
||||||
|
|
||||||
---
|
[`serde`]: https://crates.io/crates/serde
|
||||||
|
|
||||||
You may be looking for:
|
|
||||||
|
|
||||||
- [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/derive.html)
|
|
||||||
- [Examples](https://serde.rs/examples.html)
|
|
||||||
- [API documentation](https://docs.rs/serde)
|
|
||||||
- [Release notes](https://github.com/serde-rs/serde/releases)
|
|
||||||
|
|
||||||
## Serde in action
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>
|
|
||||||
Click to show Cargo.toml.
|
|
||||||
<a href="https://play.rust-lang.org/?edition=2021&gist=72755f28f99afc95e01d63174b28c1f5" target="_blank">Run this code in the playground.</a>
|
|
||||||
</summary>
|
|
||||||
|
|
||||||
```toml
|
|
||||||
[dependencies]
|
|
||||||
|
|
||||||
# The core APIs, including the Serialize and Deserialize traits. Always
|
|
||||||
# required when using Serde. The "derive" feature is only required when
|
|
||||||
# using #[derive(Serialize, Deserialize)] to make Serde work with structs
|
|
||||||
# and enums defined in your crate.
|
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
|
||||||
|
|
||||||
# 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"
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
<p></p>
|
|
||||||
|
|
||||||
```rust
|
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
struct Point {
|
|
||||||
x: i32,
|
|
||||||
y: i32,
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
let point = Point { x: 1, y: 2 };
|
|
||||||
|
|
||||||
// Convert the Point to a JSON string.
|
|
||||||
let serialized = serde_json::to_string(&point).unwrap();
|
|
||||||
|
|
||||||
// Prints serialized = {"x":1,"y":2}
|
|
||||||
println!("serialized = {}", serialized);
|
|
||||||
|
|
||||||
// Convert the JSON string back to a Point.
|
|
||||||
let deserialized: Point = serde_json::from_str(&serialized).unwrap();
|
|
||||||
|
|
||||||
// Prints deserialized = Point { x: 1, y: 2 }
|
|
||||||
println!("deserialized = {:?}", deserialized);
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Getting help
|
|
||||||
|
|
||||||
Serde is one of the most widely used Rust libraries so any place that Rustaceans
|
|
||||||
congregate will be able to help you out. For chat, consider trying the
|
|
||||||
[#rust-questions] or [#rust-beginners] channels of the unofficial community
|
|
||||||
Discord (invite: <https://discord.gg/rust-lang-community>), the [#rust-usage] or
|
|
||||||
[#beginners] channels of the official Rust Project Discord (invite:
|
|
||||||
<https://discord.gg/rust-lang>), or the [#general][zulip] stream in Zulip. For
|
|
||||||
asynchronous, consider the [\[rust\] tag on StackOverflow][stackoverflow], the
|
|
||||||
[/r/rust] subreddit which has a pinned weekly easy questions post, or the Rust
|
|
||||||
[Discourse forum][discourse]. It's acceptable to file a support issue in this
|
|
||||||
repo but they tend not to get as many eyes as any of the above and may get
|
|
||||||
closed without a response after some time.
|
|
||||||
|
|
||||||
[#rust-questions]: https://discord.com/channels/273534239310479360/274215136414400513
|
|
||||||
[#rust-beginners]: https://discord.com/channels/273534239310479360/273541522815713281
|
|
||||||
[#rust-usage]: https://discord.com/channels/442252698964721669/443150878111694848
|
|
||||||
[#beginners]: https://discord.com/channels/442252698964721669/448238009733742612
|
|
||||||
[zulip]: https://rust-lang.zulipchat.com/#narrow/stream/122651-general
|
|
||||||
[stackoverflow]: https://stackoverflow.com/questions/tagged/rust
|
|
||||||
[/r/rust]: https://www.reddit.com/r/rust
|
|
||||||
[discourse]: https://users.rust-lang.org
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
#### License
|
|
||||||
|
|
||||||
<sup>
|
|
||||||
Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
|
|
||||||
2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
|
|
||||||
</sup>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<sub>
|
|
||||||
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.
|
|
||||||
</sub>
|
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
<!-- Serde readme rendered on crates.io -->
|
|
||||||
|
|
||||||
**Serde Core is a collection of core functionalities and abstractions for Serde, a framework for *ser*ializing and *de*serializing Rust data structures efficiently and generically.**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Serde Core exposes core traits and utilities for interacting with Serde's data model.
|
|
||||||
It is intended to be consumed by Serde's data formats and other crates that implement the Serde traits by hand.
|
|
||||||
|
|
||||||
If you are looking to use Serde in your library/application to simply serialize and deserialize data, you most likely want to use [Serde](https://crates.io/crates/serde) directly.
|
|
||||||
Serde Core does _not_ offer any convenience functions for automatically implementing `Serialize` or `Deserialize` via a `#[derive]` macro.
|
|
||||||
|
|
||||||
You may be looking for:
|
|
||||||
|
|
||||||
- [API documentation](https://docs.rs/serde_core)
|
|
||||||
- [An overview of Serde](https://serde.rs/)
|
|
||||||
- [Data formats supported by Serde](https://serde.rs/#data-formats)
|
|
||||||
- [Examples](https://serde.rs/examples.html)
|
|
||||||
- [Release notes](https://github.com/serde-rs/serde_core/releases)
|
|
||||||
|
|
||||||
## Getting help
|
|
||||||
|
|
||||||
Serde is one of the most widely used Rust libraries so any place that Rustaceans
|
|
||||||
congregate will be able to help you out. For chat, consider trying the
|
|
||||||
[#rust-questions] or [#rust-beginners] channels of the unofficial community
|
|
||||||
Discord (invite: <https://discord.gg/rust-lang-community>), the [#rust-usage]
|
|
||||||
or [#beginners] channels of the official Rust Project Discord (invite:
|
|
||||||
<https://discord.gg/rust-lang>), or the [#general][zulip] stream in Zulip. For
|
|
||||||
asynchronous, consider the [\[rust\] tag on StackOverflow][stackoverflow], the
|
|
||||||
[/r/rust] subreddit which has a pinned weekly easy questions post, or the Rust
|
|
||||||
[Discourse forum][discourse]. It's acceptable to file a support issue in this
|
|
||||||
repo but they tend not to get as many eyes as any of the above and may get
|
|
||||||
closed without a response after some time.
|
|
||||||
|
|
||||||
[#rust-questions]: https://discord.com/channels/273534239310479360/274215136414400513
|
|
||||||
[#rust-beginners]: https://discord.com/channels/273534239310479360/273541522815713281
|
|
||||||
[#rust-usage]: https://discord.com/channels/442252698964721669/443150878111694848
|
|
||||||
[#beginners]: https://discord.com/channels/442252698964721669/448238009733742612
|
|
||||||
[zulip]: https://rust-lang.zulipchat.com/#narrow/stream/122651-general
|
|
||||||
[stackoverflow]: https://stackoverflow.com/questions/tagged/rust
|
|
||||||
[/r/rust]: https://www.reddit.com/r/rust
|
|
||||||
[discourse]: https://users.rust-lang.org
|
|
||||||
+11
-10
@@ -1,22 +1,23 @@
|
|||||||
//! # Serde Core
|
|
||||||
//!
|
|
||||||
//! Serde is a framework for ***ser***ializing and ***de***serializing Rust data
|
//! Serde is a framework for ***ser***ializing and ***de***serializing Rust data
|
||||||
//! structures efficiently and generically.
|
//! structures efficiently and generically.
|
||||||
//!
|
//!
|
||||||
//! `serde_core` provides essential traits and functions that form the backbone of Serde. It is intended for use by data format implementations;
|
//! The `serde_core` crate contains Serde's trait definitions with **no support
|
||||||
//! while it is possible to depend on `serde` crate in a crate that implements a data format,
|
//! for #\[derive()\]**.
|
||||||
//! doing so means that the build of data format crate cannot start until serde_derive is done building (if that feature is enabled).
|
|
||||||
//! Thus, implementing a data format in terms of serde_core and not of serde should improve compile times of users of your data format.
|
|
||||||
//!
|
//!
|
||||||
//! Alternatively, as an user of data formats you could use `serde_core` instead of `serde` if you do not intend to enable derive feature on `serde`.
|
//! In crates that derive an implementation of `Serialize` or `Deserialize`, you
|
||||||
|
//! must depend on the [`serde`] crate, not `serde_core`.
|
||||||
//!
|
//!
|
||||||
//! If you're still unsure which crate to use, favor `serde` for the most straightforward experience.
|
//! In crates that handwrite implementations of Serde traits, or only use them
|
||||||
//! For more detailed information and usage examples, refer to Serde's documentation at <https://serde.rs/>.
|
//! as trait bounds, depending on `serde_core` is permitted. But `serde`
|
||||||
|
//! re-exports all of these traits and can be used for this use case too. If in
|
||||||
|
//! doubt, disregard `serde_core` and always use `serde`.
|
||||||
//!
|
//!
|
||||||
|
//! [`serde`]: https://crates.io/crates/serde
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// Serde types in rustdoc of other crates get linked to here.
|
// Serde types in rustdoc of other crates get linked to here.
|
||||||
#![doc(html_root_url = "https://docs.rs/serde_core/1.0.219")]
|
#![doc(html_root_url = "https://docs.rs/serde/1.0.219")]
|
||||||
// Support using Serde without the standard library!
|
// Support using Serde without the standard library!
|
||||||
#![cfg_attr(not(feature = "std"), no_std)]
|
#![cfg_attr(not(feature = "std"), no_std)]
|
||||||
// Show which crate feature enables conditionally compiled APIs in documentation.
|
// Show which crate feature enables conditionally compiled APIs in documentation.
|
||||||
|
|||||||
Reference in New Issue
Block a user