From 64faa5bad78b74fff1aca73987b010cb2961c027 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edvard=20Th=C3=B6rnros?= Date: Tue, 9 Mar 2021 17:46:37 +0100 Subject: more hash sets! --- src/lib.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 6f63ad7..5ea0b63 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -228,7 +228,7 @@ pub enum Value { Blob(Rc), Instance(Rc, Rc>>), Tuple(Rc>), - Union(Vec), + Union(HashSet), Float(f64), Int(i64), Bool(bool), @@ -627,6 +627,7 @@ pub enum Op { mod op { use super::{Type, Value}; use std::rc::Rc; + use std::collections::HashSet; fn tuple_bin_op(a: &Rc>, b: &Rc>, f: fn (&Value, &Value) -> Value) -> Value { Value::Tuple(Rc::new(a.iter().zip(b.iter()).map(|(a, b)| f(a, b)).collect())) @@ -636,7 +637,7 @@ mod op { Value::Tuple(Rc::new(a.iter().map(f).collect())) } - fn union_un_op(a: &Vec, f: fn (&Value) -> Value) -> Value { + fn union_un_op(a: &HashSet, f: fn (&Value) -> Value) -> Value { a.iter().find_map(|x| { let x = f(x); if x.is_nil() { @@ -647,7 +648,7 @@ mod op { }).unwrap_or(Value::Nil) } - fn union_bin_op(a: &Vec, b: &Value, f: fn (&Value, &Value) -> Value) -> Value { + fn union_bin_op(a: &HashSet, b: &Value, f: fn (&Value, &Value) -> Value) -> Value { a.iter().find_map(|x| { let x = f(x, b); if x.is_nil() { -- cgit v1.2.1