module Events:Events is for keeping a set of events that need to happen in the future. One can add and remove events, and update the time to find out the events that need to happen.sig..end
module Event:sig..end
type 'a t
val invariant : 'a t -> unitval create : now:Core.Std.Time.t -> 'a tval iter : 'a t -> f:('a Event.t -> unit) -> unitval is_empty : 'a t -> boolval now : 'a t -> Core.Std.Time.tval advance_clock : 'a t -> to_:Core.Std.Time.t -> [ `Not_in_the_future | `Ok of 'a list ]advance_clock t ~to_ advances the clock to to_, and returns `Ok values, with
values for all events in t with at <= to_.
advance_clock returns `Not_in_the_future if Time.(<=) to_ (now t)
val add : 'a t ->
at:Core.Std.Time.t -> 'a -> [ `Not_in_the_future | `Ok of 'a Event.t ]add t ~at value adds a new event e to t with the specified value, and returns
`Ok e. add returns `Not_in_the_future if Time.(<=) at (now t).val remove : 'a t -> 'a Event.t -> [ `Not_present | `Removed ]remove t event removes event from t and returns `Removed, if event is
present in t, else it returns `Not_present.val next_upcoming : 'a t -> 'a Event.t optionnext_upcoming t returns the next upcoming event in t, if any.val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t