rl_lang/interpreter/stdlib/array/
arr_index_of.rs1use crate::{
2 interpreter::{evaluator::Evaluator, values::Value},
3 utils::{errors::Error, span::Span},
4};
5
6pub fn std_arr_index_of(
7 eval: &mut Evaluator,
8 array: Value,
9 value: Value,
10 span: Span,
11) -> Result<Value, Error> {
12 match array {
13 Value::Values { items, .. } => match items.iter().position(|item| *item == value) {
14 Some(pos) => Ok(Value::Integer(pos as i64)),
15 None => Ok(Value::Integer(-1)),
16 },
17 _ => Err(eval.err("arr_index_of() accepts only arrays".to_string(), span)),
18 }
19}