Hash_queue.Make
module V : sig ... end
val create : int -> t
create n
creates an empty hash queue of capacity n
. New elements added to a full hash queue push the oldest ones out.
val remove : t -> K.t -> unit
remove q k
removes the binding from k
in q
. If k
is not bound in c
, it does nothing.
replace q k v
binds the key k
to the value v
in the queue q
. This may or may not cause another binding to be removed, depending on the number of bindings already present in q
.
find_opt q k
is Some v
if k
is bound to v
in q
. It is None
otherwise.
val length : t -> int
length q
is the number of bindings held by q
.
val capacity : t -> int
capacity q
is the number of bindings q
can hold: capacity (create n) = n
val clear : t -> unit
clear q
removes all bindings from q
.
fold f q init
folds the function f
over the bindings of q
. The elements are iterated from oldest to newest.
Folding in the Lwt monad, from oldest to newest.
val fold_es :
(K.t -> V.t -> 'a -> ('a, 'error) Stdlib.result Lwt.t) ->
t ->
'a ->
('a, 'error) Stdlib.result Lwt.t
Folding in the error monad, from oldest to newest.
Returns the oldest element of the queue when not empty. Returns None
when empty.
take q
removes and returns the oldest element in queue q
, or returns None
if the queue is empty.
peek_at_most q n
returns the oldest n elements of the queue q
. If the queue has less than n
elements, returns all elements of the queue.
take_at_most q n
removes and returns the oldest n elements of the queue q
. If the queue has less than n
elements, removes and returns all elements of the queue.
val keys : t -> K.t list
Returns the keys of the elements stored in the queue from oldest to newest.