use std::fmt::Debug; use crate::errors::InterpreterError; use super::{EnvironmentRef, Value}; /// A callable is some object that supports being called. pub trait Callable: Debug + ToString { /// Return the amount of arguments supported by the callable. fn arity(&self) -> usize; /// Run the callable in the execution environment with the specified /// arguments. fn call( &self, environment: &EnvironmentRef, arguments: &Vec, ) -> Result; }