Module 0x1::vector
A variable-sized container that can hold any type. Indexing is 0-based, and vectors are growable. This module has many native functions.
- Constants
- Function
empty - Function
length - Function
borrow - Function
push_back - Function
borrow_mut - Function
pop_back - Function
destroy_empty - Function
swap - Function
singleton - Function
reverse - Function
append - Function
is_empty - Function
contains - Function
index_of - Function
remove - Function
insert - Function
swap_remove - Function
flatten
Constants
The index into the vector is out of bounds
const EINDEX_OUT_OF_BOUNDS: u64 = 131072;
Function empty
Create an empty vector.
public fun empty<Element>(): vector<Element>
Function length
Return the length of the vector.
public fun length<Element>(v: &vector<Element>): u64
Function borrow
Acquire an immutable reference to the ith element of the vector v. Aborts if i is out of bounds.
public fun borrow<Element>(v: &vector<Element>, i: u64): &Element
Function push_back
Add element e to the end of the vector v.
public fun push_back<Element>(v: &mut vector<Element>, e: Element)
Function borrow_mut
Return a mutable reference to the ith element in the vector v. Aborts if i is out of bounds.
public fun borrow_mut<Element>(v: &mut vector<Element>, i: u64): &mut Element
Implementation
public native fun borrow_mut<Element>(v: &mut vector<Element>, i: u64): &mut Element;
Function pop_back
Pop an element from the end of vector v. Aborts if v is empty.
public fun pop_back<Element>(v: &mut vector<Element>): Element
Function destroy_empty
Destroy the vector v. Aborts if v is not empty.
public fun destroy_empty<Element>(v: vector<Element>)
Implementation
public native fun destroy_empty<Element>(v: vector<Element>);
Function swap
Swaps the elements at the ith and jth indices in the vector v. Aborts if i or j is out of bounds.
public fun swap<Element>(v: &mut vector<Element>, i: u64, j: u64)
Function singleton
Return an vector of size one containing element e.
public fun singleton<Element>(e: Element): vector<Element>
Function reverse
Reverses the order of the elements in the vector v in place.
public fun reverse<Element>(v: &mut vector<Element>)
Implementation
Function append
Pushes all of the elements of the other vector into the lhs vector.
public fun append<Element>(lhs: &mut vector<Element>, other: vector<Element>)
Function is_empty
Return true if the vector v has no elements and false otherwise.
public fun is_empty<Element>(v: &vector<Element>): bool
Function contains
Return true if e is in the vector v. Otherwise, returns false.
public fun contains<Element>(v: &vector<Element>, e: &Element): bool
Function index_of
Return (true, i) if e is in the vector v at index i. Otherwise, returns (false, 0).
public fun index_of<Element>(v: &vector<Element>, e: &Element): (bool, u64)
Function remove
Remove the ith element of the vector v, shifting all subsequent elements. This is O(n) and preserves ordering of elements in the vector. Aborts if i is out of bounds.
public fun remove<Element>(v: &mut vector<Element>, i: u64): Element
Function insert
Insert e at position i in the vector v. If i is in bounds, this shifts the old v[i] and all subsequent elements to the right. If i == v.length(), this adds e to the end of the vector. This is O(n) and preserves ordering of elements in the vector. Aborts if i > v.length()
public fun insert<Element>(v: &mut vector<Element>, e: Element, i: u64)
Function swap_remove
Swap the ith element of the vector v with the last element and then pop the vector. This is O(1), but does not preserve ordering of elements in the vector. Aborts if i is out of bounds.
public fun swap_remove<Element>(v: &mut vector<Element>, i: u64): Element
Implementation
public fun swap_remove<Element>(v: &mut vector<Element>, i: u64): Element {
assert!(!v.is_empty(), EINDEX_OUT_OF_BOUNDS);
let last_idx = v.length() - 1;
v.swap(i, last_idx);
v.pop_back()
}
Function flatten
Concatenate the vectors of v into a single vector, keeping the order of the elements.
public fun flatten<T>(v: vector<vector<T>>): vector<T>