Fix wasm32v1-none target compilation with Cargo feature unification

When building for wasm32v1-none with Cargo, the 'std' feature gets
unified across the dependency graph, meaning serde_core sees
feature="std" even on a no_std target. This caused compilation failures
because the crate tried to use std:: imports.

This commit fixes the issue by checking target_os = "none" in addition
to the std feature flag:
- lib.rs: Force no_std when target_os = "none"
- crate_root.rs: Use core/alloc instead of std on target_os = "none"
- All std-only cfg blocks now include not(target_os = "none")
- Add explicit prelude imports for wasm32v1-none compatibility
This commit is contained in:
2026-01-09 15:36:07 +03:00
parent d99c876120
commit 679af0fb4b
10 changed files with 116 additions and 110 deletions
+3 -3
View File
@@ -112,7 +112,7 @@ impl Debug for Error {
}
}
#[cfg(feature = "std")]
#[cfg(all(feature = "std", not(target_os = "none")))]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
impl error::Error for Error {
fn description(&self) -> &str {
@@ -1160,7 +1160,7 @@ where
}
}
#[cfg(feature = "std")]
#[cfg(all(feature = "std", not(target_os = "none")))]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
impl<'de, T, S, E> IntoDeserializer<'de, E> for HashSet<T, S>
where
@@ -1588,7 +1588,7 @@ where
}
}
#[cfg(feature = "std")]
#[cfg(all(feature = "std", not(target_os = "none")))]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
impl<'de, K, V, S, E> IntoDeserializer<'de, E> for HashMap<K, V, S>
where