| ... | ... | @@ -39,6 +39,12 @@ pub fn ArrayList(comptime T: type) -> type{ |
| 39 | 39 | *new_item_ptr = *item; |
| 40 | 40 | } |
| 41 | 41 | |
| 42 | pub fn appendSlice(l: &Self, items: []const T) -> %void { |
| 43 | %return l.ensureCapacity(l.len + items.len); |
| 44 | mem.copy(T, l.items[l.len..], items); |
| 45 | l.len += items.len; |
| 46 | } |
| 47 | |
| 42 | 48 | pub fn resize(l: &Self, new_len: usize) -> %void { |
| 43 | 49 | %return l.ensureCapacity(new_len); |
| 44 | 50 | l.len = new_len; |
| ... | ... | @@ -88,4 +94,14 @@ test "basic ArrayList test" { |
| 88 | 94 | |
| 89 | 95 | assert(list.pop() == 10); |
| 90 | 96 | assert(list.len == 9); |
| 97 | |
| 98 | %%list.appendSlice([]const i32 { 1, 2, 3 }); |
| 99 | assert(list.len == 12); |
| 100 | assert(list.pop() == 3); |
| 101 | assert(list.pop() == 2); |
| 102 | assert(list.pop() == 1); |
| 103 | assert(list.len == 9); |
| 104 | |
| 105 | %%list.appendSlice([]const i32 {}); |
| 106 | assert(list.len == 9); |
| 91 | 107 | } |