Module Core.Set_once

A 'a Set_once.t is like an 'a option ref that can only be set once. A Set_once.t starts out as None, the first set transitions it to Some, and subsequent sets fail.

Equality is determined only by the internal value and not the source code position of where the value was set.

type 'a t
include Ppx_compare_lib.Comparable.S1 with type 'a t := 'a t
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
include Ppx_compare_lib.Comparable.S1__local with type 'a t := 'a t
include Ppx_compare_lib.Equal.S1 with type 'a t := 'a t
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
include Ppx_compare_lib.Equal.S1__local with type 'a t := 'a t
include Ppx_quickcheck_runtime.Quickcheckable.S1 with type 'a t := 'a t
val quickcheck_generator : 'a Base_quickcheck.Generator.t -> 'a t Base_quickcheck.Generator.t
val quickcheck_observer : 'a Base_quickcheck.Observer.t -> 'a t Base_quickcheck.Observer.t
val quickcheck_shrinker : 'a Base_quickcheck.Shrinker.t -> 'a t Base_quickcheck.Shrinker.t
val sexp_of_t : ('a -> Sexplib0.Sexp.t) -> 'a t -> Sexplib0.Sexp.t

Passes when unset.

include Base.Invariant.S1 with type 'a t := 'a t
val invariant : ('a -> unit) -> 'a t -> unit
val create : Base.Unit.t -> _ t
val create_full : here:lexing_position -> 'a -> 'a t
val set : 'a t -> here:lexing_position -> 'a -> Base.Unit.t Or_error.t
val set_exn : 'a t -> here:lexing_position -> 'a -> Base.Unit.t
val set_if_none : 'a t -> here:lexing_position -> 'a -> Base.Unit.t

set_if_none t a will do nothing if is_some t, otherwise it will set_exn t a.

val get : 'a t -> 'a Base.Option.t
val get_exn : here:lexing_position -> 'a t -> 'a
val get_or_set_thunk : here:lexing_position -> 'a t -> f:(Base.Unit.t -> 'a) @ local -> 'a

Get the value. If it's not set, f () will be called to initialize it.

val is_none : _ t -> Base.Bool.t
val is_some : _ t -> Base.Bool.t
val iter : 'a t -> f:('a -> Base.Unit.t) @ local -> Base.Unit.t
module Optional_syntax : Optional_syntax.S1 with type 'a t := 'a t with type 'a value := 'a
module Unstable : sig ... end
module Stable : sig ... end