index
and shift all following elementsvar a = [10,20,30]
a.remove_at(1)
assert a == [10,30]
REQUIRE index >= 0 and index < length
redef fun remove_at(index)
do
var node = node_at(index)
index = index_within_node + node.head_index
# Shift left all the elements after `index`
for i in [index+1 .. node.tail_index[ do
node.items[i-1] = node.items[i]
end
node.tail_index -= 1
node.items[node.tail_index] = null
length -= 1
var next_node = node.next
var prev_node = node.prev
if node.is_empty and (next_node != null or prev_node != null) then
# Empty and non-head or tail node, delete
if next_node != null then
next_node.prev = node.prev
else tail_node = prev_node.as(not null)
if prev_node != null then
prev_node.next = node.next
else head_node = next_node.as(not null)
end
end
lib/more_collections/more_collections.nit:574,2--600,4