Trait Trace

Source
pub trait Trace<'js> {
    // Required method
    fn trace<'a>(&self, tracer: Tracer<'a, 'js>);
}
Expand description

A trait for classes for tracing references to QuickJS objects.

QuickJS uses reference counting with tracing to break cycles. As a result implementing this trait incorrectly by not tracing an object cannot result in unsound code. It will however result in memory leaks as the GC will be unable to break cycles which in turn result in cyclic references being kept alive forever.

Required Methods§

Source

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Implementations on Foreign Types§

Source§

impl<'js> Trace<'js> for bool

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for char

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for f32

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for f64

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for i8

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for i16

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for i32

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for i64

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for isize

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for u8

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for u16

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for u32

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for u64

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for ()

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for usize

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js> Trace<'js> for String

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A> Trace<'js> for (A,)
where A: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B> Trace<'js> for (A, B)
where A: Trace<'js>, B: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B, C> Trace<'js> for (A, B, C)
where A: Trace<'js>, B: Trace<'js>, C: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B, C, D> Trace<'js> for (A, B, C, D)
where A: Trace<'js>, B: Trace<'js>, C: Trace<'js>, D: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B, C, D, E> Trace<'js> for (A, B, C, D, E)
where A: Trace<'js>, B: Trace<'js>, C: Trace<'js>, D: Trace<'js>, E: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B, C, D, E, F> Trace<'js> for (A, B, C, D, E, F)
where A: Trace<'js>, B: Trace<'js>, C: Trace<'js>, D: Trace<'js>, E: Trace<'js>, F: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B, C, D, E, F, G> Trace<'js> for (A, B, C, D, E, F, G)
where A: Trace<'js>, B: Trace<'js>, C: Trace<'js>, D: Trace<'js>, E: Trace<'js>, F: Trace<'js>, G: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B, C, D, E, F, G, H> Trace<'js> for (A, B, C, D, E, F, G, H)
where A: Trace<'js>, B: Trace<'js>, C: Trace<'js>, D: Trace<'js>, E: Trace<'js>, F: Trace<'js>, G: Trace<'js>, H: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B, C, D, E, F, G, H, I> Trace<'js> for (A, B, C, D, E, F, G, H, I)
where A: Trace<'js>, B: Trace<'js>, C: Trace<'js>, D: Trace<'js>, E: Trace<'js>, F: Trace<'js>, G: Trace<'js>, H: Trace<'js>, I: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B, C, D, E, F, G, H, I, J> Trace<'js> for (A, B, C, D, E, F, G, H, I, J)
where A: Trace<'js>, B: Trace<'js>, C: Trace<'js>, D: Trace<'js>, E: Trace<'js>, F: Trace<'js>, G: Trace<'js>, H: Trace<'js>, I: Trace<'js>, J: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B, C, D, E, F, G, H, I, J, K> Trace<'js> for (A, B, C, D, E, F, G, H, I, J, K)
where A: Trace<'js>, B: Trace<'js>, C: Trace<'js>, D: Trace<'js>, E: Trace<'js>, F: Trace<'js>, G: Trace<'js>, H: Trace<'js>, I: Trace<'js>, J: Trace<'js>, K: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B, C, D, E, F, G, H, I, J, K, L> Trace<'js> for (A, B, C, D, E, F, G, H, I, J, K, L)
where A: Trace<'js>, B: Trace<'js>, C: Trace<'js>, D: Trace<'js>, E: Trace<'js>, F: Trace<'js>, G: Trace<'js>, H: Trace<'js>, I: Trace<'js>, J: Trace<'js>, K: Trace<'js>, L: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B, C, D, E, F, G, H, I, J, K, L, M> Trace<'js> for (A, B, C, D, E, F, G, H, I, J, K, L, M)
where A: Trace<'js>, B: Trace<'js>, C: Trace<'js>, D: Trace<'js>, E: Trace<'js>, F: Trace<'js>, G: Trace<'js>, H: Trace<'js>, I: Trace<'js>, J: Trace<'js>, K: Trace<'js>, L: Trace<'js>, M: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B, C, D, E, F, G, H, I, J, K, L, M, N> Trace<'js> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N)
where A: Trace<'js>, B: Trace<'js>, C: Trace<'js>, D: Trace<'js>, E: Trace<'js>, F: Trace<'js>, G: Trace<'js>, H: Trace<'js>, I: Trace<'js>, J: Trace<'js>, K: Trace<'js>, L: Trace<'js>, M: Trace<'js>, N: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> Trace<'js> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)
where A: Trace<'js>, B: Trace<'js>, C: Trace<'js>, D: Trace<'js>, E: Trace<'js>, F: Trace<'js>, G: Trace<'js>, H: Trace<'js>, I: Trace<'js>, J: Trace<'js>, K: Trace<'js>, L: Trace<'js>, M: Trace<'js>, N: Trace<'js>, O: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P> Trace<'js> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)
where A: Trace<'js>, B: Trace<'js>, C: Trace<'js>, D: Trace<'js>, E: Trace<'js>, F: Trace<'js>, G: Trace<'js>, H: Trace<'js>, I: Trace<'js>, J: Trace<'js>, K: Trace<'js>, L: Trace<'js>, M: Trace<'js>, N: Trace<'js>, O: Trace<'js>, P: Trace<'js>,

Source§

fn trace<'a>(&self, _tracer: Tracer<'a, 'js>)

Source§

impl<'js, K, V> Trace<'js> for BTreeMap<K, V>
where K: Trace<'js>, V: Trace<'js>,

Source§

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Source§

impl<'js, K, V, S> Trace<'js> for HashMap<K, V, S>
where K: Trace<'js>, V: Trace<'js>,

Source§

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Source§

impl<'js, K, V, S> Trace<'js> for IndexMap<K, V, S>
where K: Trace<'js>, V: Trace<'js>,

Available on crate feature indexmap only.
Source§

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Source§

impl<'js, L, R> Trace<'js> for Either<L, R>
where L: Trace<'js>, R: Trace<'js>,

Available on crate feature either only.
Source§

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Source§

impl<'js, T> Trace<'js> for Option<T>
where T: Trace<'js>,

Source§

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Source§

impl<'js, T> Trace<'js> for Box<T>
where T: Trace<'js>,

Source§

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Source§

impl<'js, T> Trace<'js> for BTreeSet<T>
where T: Trace<'js>,

Source§

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Source§

impl<'js, T> Trace<'js> for LinkedList<T>
where T: Trace<'js>,

Source§

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Source§

impl<'js, T> Trace<'js> for VecDeque<T>
where T: Trace<'js>,

Source§

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Source§

impl<'js, T> Trace<'js> for Rc<T>
where T: Trace<'js>,

Source§

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Source§

impl<'js, T> Trace<'js> for Arc<T>
where T: Trace<'js>,

Source§

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Source§

impl<'js, T> Trace<'js> for Vec<T>
where T: Trace<'js>,

Source§

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Source§

impl<'js, T, S> Trace<'js> for HashSet<T, S>
where T: Trace<'js>,

Source§

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Source§

impl<'js, T, S> Trace<'js> for IndexSet<T, S>
where T: Trace<'js>,

Available on crate feature indexmap only.
Source§

fn trace<'a>(&self, tracer: Tracer<'a, 'js>)

Implementors§

Source§

impl<'js> Trace<'js> for Ctx<'js>

Source§

impl<'js> Trace<'js> for RustFunction<'js>

Source§

impl<'js> Trace<'js> for Array<'js>

Source§

impl<'js> Trace<'js> for Atom<'js>

Source§

impl<'js> Trace<'js> for BigInt<'js>

Source§

impl<'js> Trace<'js> for Exception<'js>

Source§

impl<'js> Trace<'js> for Function<'js>

Source§

impl<'js> Trace<'js> for Object<'js>

Source§

impl<'js> Trace<'js> for rquickjs_core::String<'js>

Source§

impl<'js> Trace<'js> for Symbol<'js>

Source§

impl<'js> Trace<'js> for Value<'js>

Source§

impl<'js, T> Trace<'js> for Module<'js, T>

Source§

impl<'js, T> Trace<'js> for Class<'js, T>
where T: JsClass<'js>,