rocket/request/
atomic_method.rs

1use crate::http::Method;
2
3pub struct AtomicMethod(ref_swap::RefSwap<'static, Method>);
4
5impl AtomicMethod {
6    #[inline]
7    pub fn new(value: Method) -> Self {
8        Self(ref_swap::RefSwap::new(value.as_ref()))
9    }
10
11    #[inline]
12    pub fn load(&self) -> Method {
13        *self.0.load(std::sync::atomic::Ordering::Acquire)
14    }
15
16    #[inline]
17    pub fn set(&mut self, new: Method) {
18        *self = Self::new(new);
19    }
20
21    #[inline]
22    pub fn store(&self, new: Method) {
23        self.0.store(new.as_ref(), std::sync::atomic::Ordering::Release)
24    }
25}
26
27impl Clone for AtomicMethod {
28    fn clone(&self) -> Self {
29        let inner = self.0.load(std::sync::atomic::Ordering::Acquire);
30        Self(ref_swap::RefSwap::new(inner))
31    }
32}