dataflow/
collection.rs

1use std::fmt;
2
3use super::TableEntity;
4
5// class DataCollectionIterator<E extends TableEntity> implements Iterator<E> {
6//   let DataCollectionBase<E> iterable;
7//   let i64 length;
8//   i64 index;
9//   E current;
10
11//   DataCollectionIterator(DataCollectionBase<E> iterable)
12//       : iterable = iterable,
13//         length = iterable.length,
14//         index = 0;
15
16//   E get current => current;
17
18//   bool moveNext() {
19//     i64 length = iterable.length;
20//     if (length != length) {
21//       throw ConcurrentModificationError(iterable);
22//     }
23//     if (index >= length) {
24//       current = null;
25//       return false;
26//     }
27//     current = iterable.elementAt(index);
28//     index++;
29//     return true;
30//   }
31// }
32
33trait DataCollectionBase<E>
34where
35    E: TableEntity,
36{
37    fn release_items(&self, start: i64, end: i64);
38
39    fn update_items(&self, start: i64);
40
41    // fn get_iterator() -> Iterator<E> => DataCollectionIterator<E>(this);
42
43    // fn first() -> E  => base.first;
44
45    // fn last() -> E => base.last;
46
47    // fn single() -> E => base.single;
48
49    // fn get_length() -> usize => base.length;
50
51    // fn set length(&self, i64 value);
52
53    // E operator [](i64 index) => base[index];
54
55    // operator []=(i64 index, E value) {
56    //   // TODO: implement.
57    //   throw UnimplementedError();
58    // }
59
60    fn add(&self, value: E);
61
62    // fn add_all(&self, iterable: Iterator<E>);
63
64    // fn elementAt(&self, i64 index) -> E;
65
66    fn insert(&self, index: i64, value: E);
67
68    // fn insert_all(&self, index: i64, iterable: Iterable<E>);
69
70    fn remove(&self, element: E) -> bool;
71
72    fn clear(&self);
73
74    fn remove_at(&self, index: i64) -> E;
75
76    fn remove_last(&self) -> E;
77
78    fn remove_range(&self, start: i64, end: i64);
79}