use triggered::Trigger; use crate::DropFn; pub struct TriggerOnDrop; impl DropFn for TriggerOnDrop { type Data = Trigger; fn on_drop(self, data: Self::Data) { data.trigger(); } } crate::macros::ext_trait!(TriggerExt: Sealed for Trigger { /// Wraps the trigger in a [`DropGuard`](crate::DropGuard) that will call [`Trigger::trigger`] on drop. fn trigger_on_drop -> TriggerOnDrop; }); #[cfg(test)] mod tests { use triggered::trigger; use crate::ext::triggered::TriggerExt; #[test] fn test() { let (tx, rx) = trigger(); assert!(!rx.is_triggered()); { let _guard = tx.trigger_on_drop(); assert!(!rx.is_triggered()); } assert!(rx.is_triggered()); } }