From d99c87612064f88ca0ae80b2300b90feb1309b29 Mon Sep 17 00:00:00 2001 From: Kurdistan Tech Ministry Date: Fri, 9 Jan 2026 13:21:34 +0300 Subject: [PATCH] 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 --- serde_core/src/de/impls.rs | 6 ++++++ serde_core/src/de/mod.rs | 5 +++++ serde_core/src/private/doc.rs | 5 +++++ serde_core/src/ser/fmt.rs | 6 ++++++ serde_core/src/ser/impls.rs | 6 ++++++ serde_core/src/ser/impossible.rs | 5 +++++ serde_core/src/ser/mod.rs | 5 +++++ 7 files changed, 38 insertions(+) diff --git a/serde_core/src/de/impls.rs b/serde_core/src/de/impls.rs index ab1a893c..06bd8804 100644 --- a/serde_core/src/de/impls.rs +++ b/serde_core/src/de/impls.rs @@ -1,5 +1,11 @@ use crate::lib::*; +// Explicit prelude import for wasm32v1-none target compatibility +// These may appear unused but are required for ?Sized bounds on wasm32v1-none +#[allow(unused_imports)] +#[cfg(not(feature = "std"))] +use ::core::prelude::rust_2021::*; + use crate::de::{ Deserialize, Deserializer, EnumAccess, Error, MapAccess, SeqAccess, Unexpected, VariantAccess, Visitor, diff --git a/serde_core/src/de/mod.rs b/serde_core/src/de/mod.rs index 2518ae68..728bb17c 100644 --- a/serde_core/src/de/mod.rs +++ b/serde_core/src/de/mod.rs @@ -114,6 +114,11 @@ use crate::lib::*; +// Explicit prelude import for wasm32v1-none target compatibility +#[allow(unused_imports)] +#[cfg(not(feature = "std"))] +use ::core::prelude::rust_2021::*; + //////////////////////////////////////////////////////////////////////////////// pub mod value; diff --git a/serde_core/src/private/doc.rs b/serde_core/src/private/doc.rs index 2cc07f0d..dddc17bc 100644 --- a/serde_core/src/private/doc.rs +++ b/serde_core/src/private/doc.rs @@ -2,6 +2,11 @@ use crate::lib::*; +// Explicit prelude import for wasm32v1-none target compatibility +#[allow(unused_imports)] +#[cfg(not(feature = "std"))] +use ::core::prelude::rust_2021::*; + use crate::ser; #[doc(hidden)] diff --git a/serde_core/src/ser/fmt.rs b/serde_core/src/ser/fmt.rs index 4b1549f0..9fbf148c 100644 --- a/serde_core/src/ser/fmt.rs +++ b/serde_core/src/ser/fmt.rs @@ -1,4 +1,10 @@ use crate::lib::*; + +// Explicit prelude import for wasm32v1-none target compatibility +#[allow(unused_imports)] +#[cfg(not(feature = "std"))] +use ::core::prelude::rust_2021::*; + use crate::ser::{Error, Impossible, Serialize, Serializer}; impl Error for fmt::Error { diff --git a/serde_core/src/ser/impls.rs b/serde_core/src/ser/impls.rs index a7a175db..553b2ab4 100644 --- a/serde_core/src/ser/impls.rs +++ b/serde_core/src/ser/impls.rs @@ -1,5 +1,11 @@ use crate::lib::*; +// Explicit prelude import for wasm32v1-none target compatibility +// These may appear unused but are required for ?Sized bounds on wasm32v1-none +#[allow(unused_imports)] +#[cfg(not(feature = "std"))] +use ::core::prelude::rust_2021::*; + use crate::ser::{Error, Serialize, SerializeTuple, Serializer}; //////////////////////////////////////////////////////////////////////////////// diff --git a/serde_core/src/ser/impossible.rs b/serde_core/src/ser/impossible.rs index fe69ae24..dfa3910b 100644 --- a/serde_core/src/ser/impossible.rs +++ b/serde_core/src/ser/impossible.rs @@ -2,6 +2,11 @@ use crate::lib::*; +// Explicit prelude import for wasm32v1-none target compatibility +#[allow(unused_imports)] +#[cfg(not(feature = "std"))] +use ::core::prelude::rust_2021::*; + use crate::ser::{ self, Serialize, SerializeMap, SerializeSeq, SerializeStruct, SerializeStructVariant, SerializeTuple, SerializeTupleStruct, SerializeTupleVariant, diff --git a/serde_core/src/ser/mod.rs b/serde_core/src/ser/mod.rs index 62e59d98..eaaf95ff 100644 --- a/serde_core/src/ser/mod.rs +++ b/serde_core/src/ser/mod.rs @@ -109,6 +109,11 @@ use crate::lib::*; +// Explicit prelude import for wasm32v1-none target compatibility +#[allow(unused_imports)] +#[cfg(not(feature = "std"))] +use ::core::prelude::rust_2021::*; + mod fmt; mod impls; mod impossible;