package core_kernel
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=93dc40648c5e4564cb72b72ab031474372f7b169e7ba7090b28e38e1b72282f1
md5=61420bfc94dbed1667be5e2ebd7c8240
doc/core_kernel.weak_array/Weak_array/index.html
Module Weak_array
Module for dealing with weak pointers, i.e., pointers that don't prevent garbage collection of what they point to.
This module is like the OCaml standard library module of the same name, except that it requires that the values in the weak set are heap blocks.
val sexp_of_t :
('a -> Ppx_sexp_conv_lib.Sexp.t) ->
'a t ->
Ppx_sexp_conv_lib.Sexp.t
val create : len:int -> _ t
val length : _ t -> int
val set : 'a t -> int -> 'a Core_kernel.Heap_block.t option -> unit
val set_exn : 'a t -> int -> 'a option -> unit
set_exn
raises an exception if given Some x
with x
not being a heap block. This is in addition to raising exceptions on bounds violation as set
does.
val get : 'a t -> int -> 'a Core_kernel.Heap_block.t option
val is_some : _ t -> int -> bool
val is_none : _ t -> int -> bool
val iter : 'a t -> f:('a -> unit) -> unit
val iteri : 'a t -> f:(int -> 'a -> unit) -> unit
Warning! blit
often takes time linear in the size of the arrays, not in the size of the range being copied. This issue is being tracked in https://github.com/ocaml/ocaml/issues/9258.
Other than that, blit
is generally preferred over get
followed by set
because, unlike get
, it doesn't have to make the value strongly-referenced. Making a value strongly-referenced, even temporarily, may result in delaying its garbage collection by a whole GC cycle.