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")]
extern crate std;
// Not public API. Used from macro-generated code.
#[doc(hidden)]
pub mod __private {
pub use alloc::vec;
}
#[cfg(feature = "std")]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
#[doc(inline)]

View File

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