package async_kernel

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

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
include Core_kernel.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 -> unit) -> 'a t -> unit
val equal : 'a t -> 'a t -> bool

equal t t' is physical equality of t and t'.

val create : unit -> 'a t

create () returns an empty ivar.

val create_full : 'a -> 'a t

create_full v returns an ivar filled with v.

val fill : 'a t -> 'a -> unit

fill 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 -> unit

fill_if_empty t v fills t with v if t is currently empty. If t is full, then fill_if_empty does nothing.

val is_empty : 'a t -> bool

is_empty t returns true if t is empty.

val is_full : 'a t -> bool

is_full t returns true if t is full.

val read : 'a t -> 'a Async_kernel__.Types.Deferred.t

read t returns a deferred that becomes enabled with value v after the ivar is filled with v.

val peek : 'a t -> 'a option

peek t returns Some v iff t is full with value v.

val value_exn : 'a t -> 'a

value_exn t returns v if t is full with value v, and raises otherwise.

val has_handlers : _ t -> bool

has_handlers t returns true if t has handlers waiting on read t.