use imbl::{HashMap, Vector}; use index_vec::Idx; use std::cell::RefCell; use std::ops::Range; use std::rc::Rc; struct Word(&'static str); struct Keyword(&'static str); struct Interned(&'static str); enum StringPart { Word(&'static str), Data(&'static str), Inline(&'static str), } #[derive(Clone, Debug, PartialEq)] struct LBox { name: usize, cell: RefCell, } #[derive(Clone, Debug, PartialEq)] struct Fn { name: &'static str, body: Vec, //...etc } #[derive(Clone, Debug, PartialEq)] enum Value { Nil, Placeholder, Boolean(bool), Keyword(usize), Interned(usize), FnDecl(usize), String(Rc), Number(f64), Tuple(Rc>), List(Box>), Dict(Box>), Box(Rc), Fn(Rc>), } fn futz() { let foo: &'static str = "foo"; let baz: Vec = vec![]; let bar: Range = 1..3; let quux: Vector = Vector::new(); let fuzz = Rc::new(quux); let blah = Box::new(foo); let val = Value::Number(12.09); let foo: f64 = 12.0; }