use super::address::Address;
use std::iter::Iterator;
pub unsafe trait Traceable {
fn mark(&mut self);
fn unmark(&mut self);
fn is_marked(&self) -> bool;
}
pub unsafe trait GcRoot<I>
where
I: Traceable + From<Address> + Into<Address>,
{
fn children<'a>(&'a mut self) -> Box<Iterator<Item = &'a mut I> + 'a>;
}