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