List :: struct (Elem_Type: type_expr) {
allocator: Allocator;
first: &ListElem(Elem_Type);
last: &ListElem(Elem_Type);
}
List.as_iter :: (list: &List) -> #auto
List.at :: (list: &List($T), index: i32) -> &T
List.contains :: (list: &List, x: list.Elem_Type) -> bool
List.count :: (list: &List) -> i32
List.fold :: (list: &List($T), init: $R, f: (T, R) -> R) -> R
List.free :: (list: &List) -> void
List.map :: (list: &List($T), f: (T) -> $R) -> List(R)
List.pop_begin :: (list: &List($T), default: T) -> T
List.pop_end :: (list: &List($T), default: T) -> T
List.push_begin :: (list: &List, x: list.Elem_Type) -> void
List.push_end :: (list: &List, x: list.Elem_Type) -> void
ListElem :: struct (T: type_expr) {
next: &ListElem(T);
prev: &ListElem(T);
data: T;
}
as_iter :: (list: &List) -> #auto
at :: (list: &List($T), index: i32) -> &T
contains :: (list: &List, x: list.Elem_Type) -> bool
count :: (list: &List) -> i32
empty :: (list: &List) -> bool
fold :: (list: &List($T), init: $R, f: (T, R) -> R) -> R
free :: (list: &List) -> void
from_array :: (arr: [] $T, allocator) -> List(T)
make :: ($T: type_expr, allocator) -> List(T)
map :: (list: &List($T), f: (T) -> $R) -> List(R)
pop_begin :: (list: &List($T), default: T) -> T
pop_begin_opt :: (list: &List($T)) -> ? T
pop_end :: (list: &List($T), default: T) -> T
pop_end_opt :: (list: &List($T)) -> ? T
push_begin :: (list: &List, x: list.Elem_Type) -> void
push_end :: (list: &List, x: list.Elem_Type) -> void