pub mod attrs; pub mod ctx; pub mod dict; pub mod error; pub mod fun; //pub mod num; pub mod ns { use crate::{mem::ptr::DynRef, obj::Sym}; use std::collections::BTreeMap; /// A namespace pub type Ns = BTreeMap; } pub mod str; pub mod sym { pub type Sym = usize; } //pub mod ty; pub mod prelude { pub use crate::{ mem::{ gc::Gc, intern::Intern, ptr::{DynRef, ObjRef}, }, obj::{Attrs, AttrsRef, Dict, DictRef, Fun, NativeFun, Ns, Obj, ObjCtx, Str, StrRef, Sym}, }; } pub use self::{ attrs::{Attrs, AttrsBuilder, AttrsRef}, ctx::ObjCtx, dict::{Dict, DictRef}, fun::{Fun, NativeFun}, ns::Ns, str::{Str, StrRef}, sym::Sym, }; use crate::mem::ptr::ObjRef; use std::any::Any; pub trait Obj { fn attrs(&self) -> ObjRef; fn is_marked(&self) -> bool; fn mark(&self); fn unmark(&self); fn as_any(&self) -> &dyn Any; }