mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-24 20:27:57 +00:00
d99c876120
When building serde_core for wasm32v1-none target with no_std but with the alloc feature enabled, the Rust compiler doesn't automatically inject the prelude. This causes ?Sized bounds to fail with "bound modifier ? can only be applied to Sized" errors. This commit adds explicit prelude imports to all modules that: 1. Use `use crate::lib::*;` for serde's internal lib facade 2. Use `?Sized` bounds in their code The fix adds: ```rust #[allow(unused_imports)] #[cfg(not(feature = "std"))] use ::core::prelude::rust_2021::*; ``` This ensures Sized, Clone, Copy, and other prelude traits are in scope for the ?Sized syntax to work correctly on wasm32v1-none targets. Affected files: - serde_core/src/de/impls.rs - serde_core/src/de/mod.rs - serde_core/src/private/doc.rs - serde_core/src/ser/fmt.rs - serde_core/src/ser/impls.rs - serde_core/src/ser/impossible.rs - serde_core/src/ser/mod.rs 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 |
|---|