pub type ArcSwapOption<T> = ArcSwapAny<Option<Arc<T>>>;
Expand description
An atomic storage for Option<Arc>
.
This is very similar to ArcSwap
, but allows storing NULL values, which
is useful in some situations.
This is a type alias only. Most of the methods are described on
ArcSwapAny
. Even though the examples there often use ArcSwap
,
they are applicable to ArcSwapOption
with appropriate changes.
§Examples
use std::sync::Arc;
use arc_swap::ArcSwapOption;
let shared = ArcSwapOption::from(None);
assert!(shared.load_full().is_none());
assert!(shared.swap(Some(Arc::new(42))).is_none());
assert_eq!(42, **shared.load_full().as_ref().unwrap());
Aliased Type§
struct ArcSwapOption<T> { /* private fields */ }
Implementations§
Source§impl<T> ArcSwapOption<T>
impl<T> ArcSwapOption<T>
Sourcepub const fn const_empty() -> Self
pub const fn const_empty() -> Self
A const-fn equivalent of empty.
Just like empty, this creates an None
-holding ArcSwapOption
. The empty is, however,
more general ‒ this is available only for the default strategy, while empty is for any
Default-constructible strategy (current or future one).
§Examples
static GLOBAL_DATA: ArcSwapOption<usize> = ArcSwapOption::const_empty();
assert!(GLOBAL_DATA.load().is_none());
GLOBAL_DATA.store(Some(Arc::new(42)));
assert_eq!(42, **GLOBAL_DATA.load().as_ref().unwrap());
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 8 bytes