mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-24 08:48:00 +00:00
7ce49dc38b
wasm32v1-none target does not automatically inject prelude items like Sized, Clone, Copy, etc. into scope. This commit: - Uses fully qualified paths (::core, ::std) to avoid ambiguity with internal `mod core` shadowing - Explicitly re-exports rust_2021 prelude items - Adds explicit imports for essential prelude traits: Sized, Clone, Copy, Send, Sync, Unpin, Default, Eq, Ord, PartialEq, PartialOrd, Iterator traits, and Fn traits - Adds `extern crate core;` for no_std targets in lib.rs This fixes compilation errors like "relaxing a default bound only does something for ?Sized" when building for wasm32v1-none target. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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 |
|---|