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 Finalize for u32

source§

impl Finalize for i64

source§

impl Finalize for isize

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 Finalize for i32

source§

impl Finalize for bool

source§

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

source§

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

source§

impl Finalize for i8

source§

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

source§

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

source§

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

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 Finalize for PathBuf

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<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<T: Finalize> Finalize for Mutex<T>

source§

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

source§

impl Finalize for char

source§

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

source§

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

source§

impl Finalize for ()

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<T: Finalize> Finalize for RefCell<T>

source§

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

source§

impl Finalize for u8

source§

impl Finalize for i16

source§

impl Finalize for f32

source§

impl Finalize for usize

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 u16

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 u64

source§

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

source§

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

source§

impl Finalize for f64

source§

impl Finalize for String

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> Finalize for (T0, T1, T2, T3)

source§

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

source§

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

source§

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

Implementors§

source§

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