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_object();
        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)

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Finalize for bool

source§

impl Finalize for char

source§

impl Finalize for f32

source§

impl Finalize for f64

source§

impl Finalize for i8

source§

impl Finalize for i16

source§

impl Finalize for i32

source§

impl Finalize for i64

source§

impl Finalize for isize

source§

impl Finalize for u8

source§

impl Finalize for u16

source§

impl Finalize for u32

source§

impl Finalize for u64

source§

impl Finalize for ()

source§

impl Finalize for usize

source§

impl Finalize for String

source§

impl Finalize for PathBuf

source§

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

source§

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

source§

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

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<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<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, 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<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, 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 Option<T>

source§

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

source§

impl<T: Finalize> Finalize for Box<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 Arc<T>

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)

source§

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

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

source§

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

source§

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

source§

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

Implementors§

source§

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