Module Async_kernel.Ivar
A write-once cell that can be empty or full (i.e., hold a single value).
One can read
an ivar to obtain a deferred that becomes determined when the ivar is filled. An ivar is similar to an 'a option ref
, except it is an error to fill an already full ivar.
type 'a t
= 'a Async_kernel__.Types.Ivar.t
include Bin_prot.Binable.S1 with type 'a t := 'a t
val bin_shape_t : Bin_prot.Shape.t -> Bin_prot.Shape.t
val bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1
val bin_write_t : ('a, 'a t) Bin_prot.Write.writer1
val bin_read_t : ('a, 'a t) Bin_prot.Read.reader1
val __bin_read_t__ : ('a, int -> 'a t) Bin_prot.Read.reader1
val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writer
val bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.reader
val bin_t : ('a, 'a t) Bin_prot.Type_class.S1.t
val sexp_of_t : ('a -> Ppx_sexp_conv_lib.Sexp.t) -> 'a t -> Ppx_sexp_conv_lib.Sexp.t
type 'a ivar
= 'a t
include Core_kernel.Invariant.S1 with type 'a t := 'a t
val invariant : 'a Base__.Invariant_intf.inv -> 'a t Base__.Invariant_intf.inv
val create : unit -> 'a t
create ()
returns an empty ivar.
val create_full : 'a -> 'a t
create_full v
returns an ivar filled withv
.
val fill : 'a t -> 'a -> unit
fill t v
fillst
with valuev
ift
was empty. Ift
was full,fill
raises an exception. It is guaranteed that immediately after callingfill t
,is_some (Deferred.peek (read t))
.
val fill_if_empty : 'a t -> 'a -> unit
fill_if_empty t v
fillst
withv
ift
is currently empty. Ift
is full, thenfill_if_empty
does nothing.
val is_empty : 'a t -> bool
is_empty t
returns true ift
is empty.
val is_full : 'a t -> bool
is_full t
returns true ift
is full.
val read : 'a t -> 'a Async_kernel__.Deferred0.t
read t
returns a deferred that becomes enabled with valuev
after the ivar is filled withv
.
val peek : 'a t -> 'a option
peek t
returnsSome v
ifft
is full with valuev
.
val value_exn : 'a t -> 'a
value_exn t
returnsv
ift
is full with valuev
, and raises otherwise.
val has_handlers : _ t -> bool
has_handlers t
returnstrue
ift
has handlers waiting onread t
.