Files
serde/serde_core
pezkuwichain d99c876120 fix: add explicit prelude imports for wasm32v1-none no_std + alloc
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>
2026-01-09 13:21:34 +03:00
..
2025-09-27 09:51:07 -07:00
2025-06-06 11:57:32 +02:00
2025-06-06 11:57:32 +02:00

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