vector_common/
trigger.rs

1use stream_cancel::Trigger;
2
3#[allow(clippy::module_name_repetitions)]
4pub struct DisabledTrigger {
5    trigger: Option<Trigger>,
6}
7
8impl DisabledTrigger {
9    #[must_use]
10    pub fn new(t: Trigger) -> Self {
11        Self { trigger: Some(t) }
12    }
13
14    #[must_use]
15    pub fn into_inner(mut self) -> Trigger {
16        self.trigger.take().unwrap_or_else(|| unreachable!())
17    }
18}
19
20impl Drop for DisabledTrigger {
21    fn drop(&mut self) {
22        if let Some(trigger) = self.trigger.take() {
23            trigger.disable();
24        }
25    }
26}
27
28impl From<Trigger> for DisabledTrigger {
29    fn from(t: Trigger) -> Self {
30        Self::new(t)
31    }
32}