File tree Expand file tree Collapse file tree 1 file changed +4
-31
lines changed Expand file tree Collapse file tree 1 file changed +4
-31
lines changed Original file line number Diff line number Diff line change @@ -5,42 +5,15 @@ use crate::persistent_list_map::ToPersistentListMapIter;
5
5
use crate :: persistent_vector:: PersistentVectorIter ;
6
6
use crate :: persistent_vector:: ToPersistentVector ;
7
7
use crate :: persistent_vector:: ToPersistentVectorIter ;
8
+ use crate :: define_protocol;
8
9
use crate :: protocol:: Protocol ;
9
10
use crate :: value:: ToValue ;
10
11
use crate :: value:: Value ;
11
12
use std:: rc:: Rc ;
13
+ // @TODO move to protocols::iterable
14
+
15
+ define_protocol ! ( Iterable , PersistentList , PersistentListMap , PersistentVector ) ;
12
16
13
- //
14
- // This Protocol lives inside of Clojure RS
15
- //
16
- #[ derive( Debug , Clone ) ]
17
- pub struct Iterable {
18
- value : Rc < Value > ,
19
- }
20
- impl Protocol for Iterable {
21
- fn try_as_protocol ( val : & Rc < Value > ) -> Option < Self > {
22
- match & * * val {
23
- Value :: PersistentList ( _) => Some ( Iterable {
24
- value : Rc :: clone ( val) ,
25
- } ) ,
26
- Value :: PersistentVector ( _) => Some ( Iterable {
27
- value : Rc :: clone ( val) ,
28
- } ) ,
29
- Value :: PersistentListMap ( _) => Some ( Iterable {
30
- value : Rc :: clone ( val) ,
31
- } ) ,
32
- _ => None ,
33
- }
34
- }
35
- fn try_unwrap ( & self ) -> Option < Rc < Value > > {
36
- match & * self . value {
37
- Value :: PersistentList ( _) => Some ( Rc :: clone ( & self . value ) ) ,
38
- Value :: PersistentVector ( _) => Some ( Rc :: clone ( & self . value ) ) ,
39
- Value :: PersistentListMap ( _) => Some ( Rc :: clone ( & self . value ) ) ,
40
- _ => None ,
41
- }
42
- }
43
- }
44
17
pub enum IterableIter {
45
18
PersistentList ( PersistentListIter ) ,
46
19
PersistentVector ( PersistentVectorIter ) ,
You can’t perform that action at this time.
0 commit comments