object_rainbow/impls/
vec.rs

1use std::collections::VecDeque;
2
3use crate::*;
4
5impl<T: ToOutput> ToOutput for Vec<T> {
6    fn to_output(&self, output: &mut dyn Output) {
7        T::slice_to_output(self, output);
8    }
9}
10
11impl<T: Topological> Topological for Vec<T> {
12    fn accept_points(&self, visitor: &mut impl PointVisitor) {
13        self.iter_accept_points(visitor);
14    }
15}
16
17impl<T: ParseInline<I>, I: ParseInput> Parse<I> for Vec<T> {
18    fn parse(input: I) -> crate::Result<Self> {
19        input.parse_vec()
20    }
21}
22
23impl<T: Tagged> Tagged for Vec<T> {
24    const TAGS: Tags = T::TAGS;
25}
26
27impl<T: Inline<E>, E: 'static> Object<E> for Vec<T> {}
28impl<T: ReflessInline> ReflessObject for Vec<T> {}
29
30impl<T: ToOutput> ToOutput for VecDeque<T> {
31    fn to_output(&self, output: &mut dyn Output) {
32        let (l, r) = self.as_slices();
33        T::slice_to_output(l, output);
34        T::slice_to_output(r, output);
35    }
36}
37
38impl<T: Topological> Topological for VecDeque<T> {
39    fn accept_points(&self, visitor: &mut impl PointVisitor) {
40        self.iter_accept_points(visitor);
41    }
42}
43
44impl<T: ParseInline<I>, I: ParseInput> Parse<I> for VecDeque<T> {
45    fn parse(input: I) -> crate::Result<Self> {
46        input.parse_vec().map(From::from)
47    }
48}
49
50impl<T: Tagged> Tagged for VecDeque<T> {
51    const TAGS: Tags = T::TAGS;
52}
53
54impl<T: Inline<E>, E: 'static> Object<E> for VecDeque<T> {}
55impl<T: ReflessInline> ReflessObject for VecDeque<T> {}