When the std feature is unified to true by workspace feature resolution but
the target is wasm32v1-none, lib.rs forces no_std mode and aliases core as
std. In that configuration 'use std::io' becomes 'use core::io', which is
gated behind the unstable core_io_borrowed_buf feature (tracking issue #117693,
not stable in Rust 1.88).
Gate both the 'use std::io' import and the io::Write impl behind
not(all(target_arch = "wasm32", target_os = "none")) to prevent this.
The io::Write impl is irrelevant on no_std wasm targets anyway.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
cargo check --target wasm32v1-none uses workspace feature unification which
may enable the std feature even for no_std targets. wasm32v1-none (bare-metal
wasm, target_os=none) has no libstd available, so we must force no_std and
the core-as-std alias for this specific target combination.
- arrayvec.rs: Use concrete return types ([T], slice::Iter, slice::IterMut)
instead of Self::Target/Self::IntoIter to avoid E0223 ambiguity
introduced by the Receiver trait in Rust 1.87+
- char.rs: Explicitly import Result/Ok/Err from core for target_os=none
where the standard prelude is not auto-injected