[][src]Trait neon::prelude::Finalize

pub trait Finalize: Sized {
    pub fn finalize<'a, C: Context<'a>>(self, _: &mut C) { ... }
}

Finalize is executed on the main JavaScript thread and executed immediately before garbage collection. Values contained by a JsBox must implement Finalize.

Examples

Finalize provides a default implementation that does not perform any finalization.

struct Point(f64, f64);

impl Finalize for Point {}

A finalize method may be specified for performing clean-up operations before dropping the contained value.

struct Point(f64, f64);

impl Finalize for Point {
    fn finalize<'a, C: Context<'a>>(self, cx: &mut C) {
        let global = cx.global();
        let emit = global
            .get(cx, "emit")
            .unwrap()
            .downcast::<JsFunction, _>(cx)
            .unwrap();

        let args = vec![
            cx.string("gc_point").upcast::<JsValue>(),
            cx.number(self.0).upcast(),
            cx.number(self.1).upcast(),
        ];

        emit.call(cx, global, args).unwrap();
    }
}

Provided methods

pub fn finalize<'a, C: Context<'a>>(self, _: &mut C)[src]

Loading content...

Implementations on Foreign Types

impl Finalize for bool[src]

impl Finalize for char[src]

impl Finalize for i8[src]

impl Finalize for i16[src]

impl Finalize for i32[src]

impl Finalize for i64[src]

impl Finalize for isize[src]

impl Finalize for u8[src]

impl Finalize for u16[src]

impl Finalize for u32[src]

impl Finalize for u64[src]

impl Finalize for usize[src]

impl Finalize for f32[src]

impl Finalize for f64[src]

impl Finalize for String[src]

impl Finalize for PathBuf[src]

impl Finalize for ()[src]

impl<T0: Finalize> Finalize for (T0,)[src]

impl<T0: Finalize, T1: Finalize> Finalize for (T0, T1)[src]

impl<T0: Finalize, T1: Finalize, T2: Finalize> Finalize for (T0, T1, T2)[src]

impl<T0: Finalize, T1: Finalize, T2: Finalize, T3: Finalize> Finalize for (T0, T1, T2, T3)[src]

impl<T0: Finalize, T1: Finalize, T2: Finalize, T3: Finalize, T4: Finalize> Finalize for (T0, T1, T2, T3, T4)[src]

impl<T0: Finalize, T1: Finalize, T2: Finalize, T3: Finalize, T4: Finalize, T5: Finalize> Finalize for (T0, T1, T2, T3, T4, T5)[src]

impl<T0: Finalize, T1: Finalize, T2: Finalize, T3: Finalize, T4: Finalize, T5: Finalize, T6: Finalize> Finalize for (T0, T1, T2, T3, T4, T5, T6)[src]

impl<T0: Finalize, T1: Finalize, T2: Finalize, T3: Finalize, T4: Finalize, T5: Finalize, T6: Finalize, T7: Finalize> Finalize for (T0, T1, T2, T3, T4, T5, T6, T7)[src]

impl<T: Finalize> Finalize for Vec<T>[src]

impl<T: Finalize> Finalize for Box<T>[src]

impl<T: Finalize> Finalize for Rc<T>[src]

impl<T: Finalize> Finalize for Arc<T>[src]

impl<T: Finalize> Finalize for Mutex<T>[src]

impl<T: Finalize> Finalize for RwLock<T>[src]

impl<T: Finalize> Finalize for Cell<T>[src]

impl<T: Finalize> Finalize for RefCell<T>[src]

Loading content...

Implementors

Loading content...