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.
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.
When serde_json depends on serde |
|---|
When serde_json depends on serde_core |
|---|