rust-crafting-interpreters-.../src/interpreter/callable.rs

20 lines
525 B
Rust
Raw Normal View History

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<Value>,
) -> Result<Value, InterpreterError>;
}