Fix json! invocations when std prelude is not in scope

This commit is contained in:
David Tolnay 2024-08-01 14:22:10 -07:00
parent 611b2a4fb6
commit 6827c7b3c5
No known key found for this signature in database
GPG Key ID: F9BA143B95FF6D82
2 changed files with 9 additions and 3 deletions

View File

@ -373,6 +373,12 @@ extern crate alloc;
#[cfg(feature = "std")] #[cfg(feature = "std")]
extern crate std; extern crate std;
// Not public API. Used from macro-generated code.
#[doc(hidden)]
pub mod __private {
pub use alloc::vec;
}
#[cfg(feature = "std")] #[cfg(feature = "std")]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))] #[cfg_attr(docsrs, doc(cfg(feature = "std")))]
#[doc(inline)] #[doc(inline)]

View File

@ -77,12 +77,12 @@ macro_rules! json_internal {
// Done with trailing comma. // Done with trailing comma.
(@array [$($elems:expr,)*]) => { (@array [$($elems:expr,)*]) => {
vec![$($elems,)*] $crate::__private::vec![$($elems,)*]
}; };
// Done without trailing comma. // Done without trailing comma.
(@array [$($elems:expr),*]) => { (@array [$($elems:expr),*]) => {
vec![$($elems),*] $crate::__private::vec![$($elems),*]
}; };
// Next element is `null`. // Next element is `null`.
@ -254,7 +254,7 @@ macro_rules! json_internal {
}; };
([]) => { ([]) => {
$crate::Value::Array(vec![]) $crate::Value::Array($crate::__private::vec![])
}; };
([ $($tt:tt)+ ]) => { ([ $($tt:tt)+ ]) => {