rune 0.9.0

An embeddable dynamic programming language for Rust.
Documentation
use crate::collections::HashMap;
use crate::ir::eval::prelude::*;

impl IrEval for ir::IrObject {
    type Output = IrValue;

    fn eval(
        &self,
        interp: &mut IrInterpreter<'_>,
        used: Used,
    ) -> Result<Self::Output, IrEvalOutcome> {
        let mut object = HashMap::with_capacity(self.assignments.len());

        for (key, value) in self.assignments.iter() {
            object.insert(key.as_ref().to_owned(), value.eval(interp, used)?);
        }

        Ok(IrValue::Object(Shared::new(object)))
    }
}