1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
use crate::eval::Env; use crate::objects::{Eval, Object, Vtable}; pub fn vtable() -> Vtable { let vt = Vtable::new("Input"); vt.add_primitive_method_or_panic("readline", input_readline); vt } fn input_readline(receiver: &Object, _args: &[Object], env: &Env) -> Eval { match receiver.input().readline() { Some(line) => Ok(env.foo.into_string(line)), // FIXME: Nil would make more sense, or a specific EOF object None => Ok(env.foo.make_boolean(false)), } }