Stdlib.QueueFirst-in first-out queues.
This module implements queues (FIFOs), with in-place modification.
Warning This module is not thread-safe: each Queue.t value must be protected from concurrent access (e.g. with a Mutex.t). Failure to do so can lead to a crash.
Raised when Queue.take or Queue.peek is applied to an empty queue.
val create : unit -> 'a tReturn a new queue, initially empty.
val add : 'a -> 'a t -> unitadd x q adds the element x at the end of the queue q.
val push : 'a -> 'a t -> unitpush is a synonym for add.
val take : 'a t -> 'atake q removes and returns the first element in queue q, or raises Empty if the queue is empty.
val take_opt : 'a t -> 'a optiontake_opt q removes and returns the first element in queue q, or returns None if the queue is empty.
val pop : 'a t -> 'apop is a synonym for take.
val peek : 'a t -> 'apeek q returns the first element in queue q, without removing it from the queue, or raises Empty if the queue is empty.
val peek_opt : 'a t -> 'a optionpeek_opt q returns the first element in queue q, without removing it from the queue, or returns None if the queue is empty.
val top : 'a t -> 'atop is a synonym for peek.
val clear : 'a t -> unitDiscard all elements from a queue.
val is_empty : 'a t -> boolReturn true if the given queue is empty, false otherwise.
val length : 'a t -> intReturn the number of elements in a queue.
val iter : ('a -> unit) -> 'a t -> unititer f q applies f in turn to all elements of q, from the least recently entered to the most recently entered. The queue itself is unchanged.
val fold : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'bfold f accu q is equivalent to List.fold_left f accu l, where l is the list of q's elements. The queue remains unchanged.
transfer q1 q2 adds all of q1's elements at the end of the queue q2, then clears q1. It is equivalent to the sequence iter (fun x -> add x q2) q1; clear q1, but runs in constant time.
Iterate on the queue, in front-to-back order. The behavior is not specified if the queue is modified during the iteration.