@@ -49,20 +49,21 @@ pub use lazy::Storage as LazyStorage;
49
49
#[ unstable( feature = "thread_local_internals" , issue = "none" ) ]
50
50
#[ rustc_macro_transparency = "semitransparent" ]
51
51
pub macro thread_local_inner {
52
- // used to generate the `LocalKey` value for const-initialized thread locals
52
+ // NOTE: we cannot import `LocalKey`, `LazyStorage` or `EagerStorage` with a `use` because that
53
+ // can shadow user provided type or type alias with a matching name. Please update the shadowing
54
+ // test in `tests/thread.rs` if these types are renamed.
55
+
56
+ // Used to generate the `LocalKey` value for const-initialized thread locals.
53
57
( @key $t: ty, const $init: expr) => { {
54
58
const __INIT: $t = $init;
55
59
56
60
unsafe {
57
- use $crate:: mem:: needs_drop;
58
- use $crate:: thread:: LocalKey ;
59
- use $crate:: thread:: local_impl:: EagerStorage ;
60
-
61
- LocalKey :: new ( const {
62
- if needs_drop :: < $t> ( ) {
61
+ $crate:: thread:: LocalKey :: new ( const {
62
+ if $crate:: mem:: needs_drop :: < $t> ( ) {
63
63
|_| {
64
64
#[ thread_local]
65
- static VAL : EagerStorage < $t> = EagerStorage :: new ( __INIT) ;
65
+ static VAL : $crate:: thread:: local_impl:: EagerStorage < $t>
66
+ = $crate:: thread:: local_impl:: EagerStorage :: new ( __INIT) ;
66
67
VAL . get ( )
67
68
}
68
69
} else {
@@ -84,21 +85,19 @@ pub macro thread_local_inner {
84
85
}
85
86
86
87
unsafe {
87
- use $crate:: mem:: needs_drop;
88
- use $crate:: thread:: LocalKey ;
89
- use $crate:: thread:: local_impl:: LazyStorage ;
90
-
91
- LocalKey :: new ( const {
92
- if needs_drop :: < $t> ( ) {
88
+ $crate:: thread:: LocalKey :: new ( const {
89
+ if $crate:: mem:: needs_drop :: < $t> ( ) {
93
90
|init| {
94
91
#[ thread_local]
95
- static VAL : LazyStorage < $t, ( ) > = LazyStorage :: new ( ) ;
92
+ static VAL : $crate:: thread:: local_impl:: LazyStorage < $t, ( ) >
93
+ = $crate:: thread:: local_impl:: LazyStorage :: new ( ) ;
96
94
VAL . get_or_init ( init, __init)
97
95
}
98
96
} else {
99
97
|init| {
100
98
#[ thread_local]
101
- static VAL : LazyStorage < $t, !> = LazyStorage :: new ( ) ;
99
+ static VAL : $crate:: thread:: local_impl:: LazyStorage < $t, !>
100
+ = $crate:: thread:: local_impl:: LazyStorage :: new ( ) ;
102
101
VAL . get_or_init ( init, __init)
103
102
}
104
103
}
0 commit comments