You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Use local_inner_macros to resolve all helper macros within $crate
This fixes the following error when using Rust 2018 style macro imports.
extern crate lazy_static;
use lazy_static::lazy_static;
error: cannot find macro `__lazy_static_internal!` in this scope
--> src/main.rs:8:1
|
8 | / lazy_static! {
9 | | static ref M: HashMap<String, String> = HashMap::new();
10 | | }
| |_^
|
The `local_inner_macros` modifier resolves all macro invocations made
from within that macro as helpers in the same crate. So if
`lazy_static!` expands to an invocation of `__lazy_static_internal!`
then this would be resolved as `$crate::__lazy_static_internal!` rather
than requiring the caller to have `__lazy_static_internal` in scope.
The attribute is ignored by pre-2018 compilers so lazy_static will
continue to work as normal with #[macro_use].
In the future when dropping compatibility with pre-2018 compilers we can
remove the `local_inner_macros` modifier and use our own explicit
`$crate::` prefixes on invocations of helper macros.
0 commit comments