File tree 1 file changed +7
-4
lines changed
1 file changed +7
-4
lines changed Original file line number Diff line number Diff line change 1
1
use jobserver:: { Acquired , Client , HelperThread } ;
2
2
use std:: {
3
3
env,
4
+ mem:: MaybeUninit ,
4
5
sync:: {
5
6
mpsc:: { self , Receiver , Sender } ,
6
7
Once ,
@@ -87,18 +88,20 @@ impl JobTokenServer {
87
88
/// one implicit job token in the wild.
88
89
fn jobserver ( ) -> & ' static JobTokenServer {
89
90
static INIT : Once = Once :: new ( ) ;
90
- static mut JOBSERVER : Option < JobTokenServer > = None ;
91
+ static mut JOBSERVER : MaybeUninit < JobTokenServer > = MaybeUninit :: uninit ( ) ;
91
92
92
93
fn _assert_sync < T : Sync > ( ) { }
93
94
_assert_sync :: < jobserver:: Client > ( ) ;
94
95
95
96
unsafe {
96
97
INIT . call_once ( || {
97
98
let server = default_jobserver ( ) ;
98
- JOBSERVER =
99
- Some ( JobTokenServer :: new_inner ( server) . expect ( "Job server initialization failed" ) ) ;
99
+ JOBSERVER = MaybeUninit :: new (
100
+ JobTokenServer :: new_inner ( server) . expect ( "Job server initialization failed" ) ,
101
+ ) ;
100
102
} ) ;
101
- JOBSERVER . as_ref ( ) . unwrap ( )
103
+ // Poor man's assume_init_ref, as that'd require a MSRV of 1.55.
104
+ & * JOBSERVER . as_ptr ( )
102
105
}
103
106
}
104
107
You can’t perform that action at this time.
0 commit comments