| ... | @@ -39,6 +39,12 @@ pub fn ArrayList(comptime T: type) -> type{ | ... | @@ -39,6 +39,12 @@ pub fn ArrayList(comptime T: type) -> type{ |
| 39 | *new_item_ptr = *item; | 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 | pub fn resize(l: &Self, new_len: usize) -> %void { | 48 | pub fn resize(l: &Self, new_len: usize) -> %void { |
| 43 | %return l.ensureCapacity(new_len); | 49 | %return l.ensureCapacity(new_len); |
| 44 | l.len = new_len; | 50 | l.len = new_len; |
| ... | @@ -88,4 +94,14 @@ test "basic ArrayList test" { | ... | @@ -88,4 +94,14 @@ test "basic ArrayList test" { |
| 88 | | 94 | |
| 89 | assert(list.pop() == 10); | 95 | assert(list.pop() == 10); |
| 90 | assert(list.len == 9); | 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 | } |