mirror of
https://github.com/serde-rs/serde.git
synced 2025-09-28 13:30:48 +00:00

Even for a simple data structure that would ordinarily expand to an impl that only refers to the public Serde traits without serde::__private, we still disallow a (renamed) serde_core dependency. This leaves the liberty to new usage of private helpers in such impls over time. For example, similar to the optimization of the standard library's derive(Debug) that introduced debug_struct_field1_finish to improve compile time of derived impls.
The serde_core
crate contains Serde's trait definitions with no support for
#[derive()].
In crates that derive an implementation of Serialize
or Deserialize
, you
must depend on the serde
crate, not serde_core
.
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
.