# Object/Memory/Heap Concepts for Deimos/DVM ```rust use std::any::TypeId; trait Trace { fn grays(&self) -> &[GcAny]; } struct Gc { inner: *mut GcInner, } impl Gc { fn data(&self) -> &T { &self.inner.data } } struct GcMut { inner: *mut GcInner, } struct GcInner { data: T, gc_count: usize, gc_mut_count: bool, next: Option, color: bool, } struct GcAny { inner: *mut (), // like void* in C v_table: *const GcAnyVTable, type_id: *const TypeId, } enum Value { Object(Gc), Int(i32), String(Gc), Null } struct Object { class: *const Class, } ```