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.tval bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1val bin_write_t : ('a, 'a t) Bin_prot.Write.writer1val bin_read_t : ('a, 'a t) Bin_prot.Read.reader1val __bin_read_t__ : ('a, int -> 'a t) Bin_prot.Read.reader1val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writerval bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.readerval 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 tcreate ()returns an empty ivar.
val create_full : 'a -> 'a tcreate_full vreturns an ivar filled withv.
val fill : 'a t -> 'a -> unitfill t vfillstwith valueviftwas empty. Iftwas full,fillraises an exception. It is guaranteed that immediately after callingfill t,is_some (Deferred.peek (read t)).
val fill_if_empty : 'a t -> 'a -> unitfill_if_empty t vfillstwithviftis currently empty. Iftis full, thenfill_if_emptydoes nothing.
val is_empty : 'a t -> boolis_empty treturns true iftis empty.
val is_full : 'a t -> boolis_full treturns true iftis full.
val read : 'a t -> 'a Async_kernel__.Deferred0.tread treturns a deferred that becomes enabled with valuevafter the ivar is filled withv.
val peek : 'a t -> 'a optionpeek treturnsSome vifftis full with valuev.
val value_exn : 'a t -> 'avalue_exn treturnsviftis full with valuev, and raises otherwise.
val has_handlers : _ t -> boolhas_handlers treturnstrueifthas handlers waiting onread t.