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}