diff options
author | 2018-01-23 20:27:06 +0100 | |
---|---|---|
committer | 2018-01-23 20:27:06 +0100 | |
commit | d30209fa372831d819607e6a324b7512f8d1cfaa (patch) | |
tree | ed29ab4b5932438f4244a0efab4869231967d7d3 /src/macros.rs | |
parent | c921d43f58db6ac4050e53c6b372d530fce073b7 (diff) | |
download | cortex-m-d30209fa372831d819607e6a324b7512f8d1cfaa.tar.gz cortex-m-d30209fa372831d819607e6a324b7512f8d1cfaa.tar.zst cortex-m-d30209fa372831d819607e6a324b7512f8d1cfaa.zip |
initialize singletons at runtime
Diffstat (limited to 'src/macros.rs')
-rw-r--r-- | src/macros.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/macros.rs b/src/macros.rs index c9a32c2..c5799bf 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -54,13 +54,14 @@ macro_rules! singleton { (: $ty:ty = $expr:expr) => { $crate::interrupt::free(|_| unsafe { static mut USED: bool = false; - static mut VAR: $ty = $expr; + static mut VAR: $crate::UntaggedOption<$ty> = $crate::UntaggedOption { none: () }; if USED { None } else { USED = true; - let var: &'static mut _ = &mut VAR; + VAR.some = $expr; + let var: &'static mut _ = &mut VAR.some; Some(var) } }) |