cel_cxx/values/impls/
list.rs1use super::*;
2use crate::{types::*, values::*};
3
4use std::collections::{LinkedList, VecDeque};
5
6impl_typed!(
7 List: Value {
8 @[T: TypedValue]
9 Vec<T> => ListType::new(T::value_type()),
10
11 @[T: TypedValue]
12 VecDeque<T> => ListType::new(T::value_type()),
13
14 @[T: TypedValue]
15 LinkedList<T> => ListType::new(T::value_type()),
16
17 @[T: TypedValue]
18 [T] => ListType::new(T::value_type()),
19 }
20);
21
22impl_into!(
23 List: Value {
24 @[T: IntoValue]
25 Vec<T> => |self|
26 self.into_iter()
27 .map(IntoValue::into_value)
28 .collect(),
29
30 @[T: IntoValue + Clone]
31 &[T] => |self|
32 self.iter()
33 .map(IntoValue::into_value)
34 .collect(),
35
36 @[T: IntoValue]
37 VecDeque<T> => |self|
38 self.into_iter()
39 .map(IntoValue::into_value)
40 .collect(),
41
42 @[T: IntoValue]
43 LinkedList<T> => |self|
44 self.into_iter()
45 .map(IntoValue::into_value)
46 .collect(),
47 }
48);
49
50impl_from_list!(
51 #[adder = push]
52 Vec,
53 #[adder = push_back]
54 VecDeque,
55 #[adder = push_back]
56 LinkedList,
57);