rl_lang/interpreter/stdlib/array/
arr_unique.rs1use crate::{
2 interpreter::{evaluator::Evaluator, values::Value},
3 utils::{errors::Error, span::Span},
4};
5
6pub fn std_arr_unique(eval: &mut Evaluator, array: Value, span: Span) -> Result<Value, Error> {
7 match array {
8 Value::Values { items_type, items } => {
9 let mut seen = Vec::new();
10 for item in items {
11 if !seen.contains(&item) {
12 seen.push(item);
13 }
14 }
15 Ok(Value::Values {
16 items_type,
17 items: seen,
18 })
19 }
20 _ => Err(eval.err("arr_unique() accepts only arrays".to_string(), span)),
21 }
22}