Trait neon::types::Finalize

source ·
pub trait Finalize: Sized {
    // Provided method
    fn finalize<'a, C: Context<'a>>(self, _: &mut C) { ... }
}
Expand description

A trait for finalizing values owned by the main JavaScript thread.

Finalize::finalize is executed on the main JavaScript thread 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: Handle<JsFunction> = global
            .get(cx, "emit")
            .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§

source

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

Implementations on Foreign Types§

source§

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)

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

impl<T: Finalize> Finalize for Cell<T>

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

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

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

impl Finalize for String

source§

impl<T: Finalize> Finalize for Vec<T>

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

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

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

impl<T0: Finalize> Finalize for (T0,)

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

impl Finalize for f32

source§

impl Finalize for ()

source§

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

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

impl<T: Finalize> Finalize for Option<T>

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

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

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

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

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

impl Finalize for bool

source§

impl Finalize for u8

source§

impl Finalize for i8

source§

impl Finalize for i16

source§

impl Finalize for usize

source§

impl Finalize for PathBuf

source§

impl Finalize for isize

source§

impl<T: Finalize> Finalize for Box<T>

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

impl Finalize for i32

source§

impl Finalize for i64

source§

impl Finalize for u64

source§

impl<T: Finalize> Finalize for Rc<T>

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

impl Finalize for char

source§

impl<T: Finalize> Finalize for RwLock<T>

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

impl Finalize for u16

source§

impl<T0: Finalize, T1: Finalize> Finalize for (T0, T1)

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

impl Finalize for u32

source§

impl<T: Finalize> Finalize for RefCell<T>

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

impl<T: Finalize> Finalize for Arc<T>

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

source§

impl Finalize for f64

source§

impl<T: Finalize> Finalize for Mutex<T>

source§

fn finalize<'a, C: Context<'a>>(self, cx: &mut C)

Implementors§

source§

impl<T: Object> Finalize for Root<T>