1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pub struct PanicOnDrop(&'static str);

impl PanicOnDrop {
    pub fn new(message: &'static str) -> Self {
        Self(message)
    }

    pub fn disengage(self) {
        std::mem::forget(self);
    }
}

impl Drop for PanicOnDrop {
    fn drop(&mut self) {
        panic!("Cannot drop value: {}", self.0);
    }
}