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.
include sig ... endval bin_t : 'a Bin_prot.Type_class.t ‑> 'a t Bin_prot.Type_class.tval bin_read_t : 'a Bin_prot.Read.reader ‑> 'a t Bin_prot.Read.readerval __bin_read_t__ : 'a Bin_prot.Read.reader ‑> (int ‑> 'a t) Bin_prot.Read.readerval bin_reader_t : 'a Bin_prot.Type_class.reader ‑> 'a t Bin_prot.Type_class.readerval bin_size_t : 'a Bin_prot.Size.sizer ‑> 'a t Bin_prot.Size.sizerval bin_write_t : 'a Bin_prot.Write.writer ‑> 'a t Bin_prot.Write.writerval bin_writer_t : 'a Bin_prot.Type_class.writer ‑> 'a t Bin_prot.Type_class.writerval bin_shape_t : Bin_prot.Shape.t ‑> Bin_prot.Shape.tval sexp_of_t : ('a ‑> Base.Sexp.t) ‑> 'a t ‑> Base.Sexp.tinclude Core_kernel.Invariant.S1 with type a t := a tval invariant : 'a Base__.Invariant_intf.inv ‑> 'a t Base__.Invariant_intf.invval fill : 'a t ‑> 'a ‑> unitfill t v fills t with value v if t was empty. If t was full, fill raises
an exception. It is guaranteed that immediately after calling fill t, is_some
(Deferred.peek (read t)).
val fill_if_empty : 'a t ‑> 'a ‑> unitfill_if_empty t v fills t with v if t is currently empty. If t is full,
then fill_if_empty does nothing.
val read : 'a t ‑> 'a Async_kernel__.Deferred0.tread t returns a deferred that becomes enabled with value v after the ivar is
filled with v.