Illustrate build timings in serde_core readme

This commit is contained in:
David Tolnay 2025-09-13 16:50:44 -07:00
parent 9cf3f2ed7d
commit 900c922f41
No known key found for this signature in database
GPG Key ID: F9BA143B95FF6D82
2 changed files with 36 additions and 2 deletions

View File

@ -4,9 +4,25 @@ The `serde_core` crate contains Serde's trait definitions with **no support for
In crates that derive an implementation of `Serialize` or `Deserialize`, you In crates that derive an implementation of `Serialize` or `Deserialize`, you
must depend on the [`serde`] crate, not `serde_core`. must depend on the [`serde`] crate, not `serde_core`.
[`serde`]: https://crates.io/crates/serde
In crates that handwrite implementations of Serde traits, or only use them as 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 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 of these traits and can be used for this use case too. If in doubt, disregard
`serde_core` and always use `serde`. `serde_core` and always use `serde`.
[`serde`]: https://crates.io/crates/serde Crates that depend on `serde_core` instead of `serde` are able to compile in
parallel with `serde_derive` even when `serde`'s "derive" feature is turned on,
as shown in the following build timings.
<br>
| When `serde_json` depends on `serde` |
|---|
| <img src="https://github.com/user-attachments/assets/78dc179c-6ab1-4059-928c-1474b0d9d0bb"> |
<br>
| When `serde_json` depends on `serde_core` |
|---|
| <img src="https://github.com/user-attachments/assets/6b6cff5e-3e45-4ac7-9db1-d99ee8b9f5f7"> |

View File

@ -7,12 +7,30 @@
//! In crates that derive an implementation of `Serialize` or `Deserialize`, you //! In crates that derive an implementation of `Serialize` or `Deserialize`, you
//! must depend on the [`serde`] crate, not `serde_core`. //! must depend on the [`serde`] crate, not `serde_core`.
//! //!
//! [`serde`]: https://crates.io/crates/serde
//!
//! In crates that handwrite implementations of Serde traits, or only use them //! In crates that handwrite implementations of Serde traits, or only use them
//! as trait bounds, depending on `serde_core` is permitted. But `serde` //! 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 //! 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`. //! doubt, disregard `serde_core` and always use `serde`.
//! //!
//! [`serde`]: https://crates.io/crates/serde //! Crates that depend on `serde_core` instead of `serde` are able to compile in
//! parallel with `serde_derive` even when `serde`'s "derive" feature is turned on,
//! as shown in the following build timings.
//!
//! <br>
//!
//! <table>
//! <tr><td align="center">When <code>serde_json</code> depends on <code>serde</code></td></tr>
//! <tr><td><img src="https://github.com/user-attachments/assets/78dc179c-6ab1-4059-928c-1474b0d9d0bb"></td></tr>
//! </table>
//!
//! <br>
//!
//! <table>
//! <tr><td align="center">When <code>serde_json</code> depends on <code>serde_core</code></td></tr>
//! <tr><td><img src="https://github.com/user-attachments/assets/6b6cff5e-3e45-4ac7-9db1-d99ee8b9f5f7"></td></tr>
//! </table>
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////