Files
ValueScript/valuescript_vm/src/array_higher_functions/array_find.rs
2023-02-27 12:35:37 +11:00

24 lines
644 B
Rust

use super::super::vs_value::{Val, ValTrait};
use super::super::native_frame_function::NativeFrameFunction;
use super::array_mapping_frame::{ArrayMappingState, ArrayMappingFrame};
pub static FIND: NativeFrameFunction = NativeFrameFunction {
make_frame: || Box::new(ArrayMappingFrame::new(Box::new(FindState::default()))),
};
#[derive(Default)]
struct FindState {}
impl ArrayMappingState for FindState {
fn process(&mut self, _i: usize, element: &Val, mapped: Val) -> Option<Val> {
match mapped.is_truthy() {
true => Some(element.clone()),
false => None,
}
}
fn finish(&mut self) -> Val {
Val::Undefined
}
}