oxygengine_backend_web/closure.rs
1use std::any::Any;
2use wasm_bindgen::prelude::*;
3
4#[derive(Debug, Default)]
5pub struct WebClosure(Option<Box<dyn Any>>);
6
7impl WebClosure {
8 pub fn acquire<T: ?Sized + 'static>(closure: Closure<T>) -> Self {
9 Self(Some(Box::new(closure)))
10 }
11
12 pub fn release(&mut self) {
13 self.0 = None;
14 }
15}
16
17#[cfg(feature = "web")]
18unsafe impl Send for WebClosure {}
19#[cfg(feature = "web")]
20unsafe impl Sync for WebClosure {}