package octez-libs
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=aa2f5bc99cc4ca2217c52a1af2a2cdfd3b383208cb859ca2e79ca0903396ca1d
sha512=d68bb3eb615e3dcccc845fddfc9901c95b3c6dc8e105e39522ce97637b1308a7fa7aa1d271351d5933febd7476b2819e1694f31198f1f0919681f1f9cc97cb3a
doc/octez-libs.lwt-result-stdlib/Tezos_lwt_result_stdlib/Lwtreslib/Bare/Hashtbl/Make_es/index.html
Module Hashtbl.Make_es
Parameters
module H : Hashtbl.HashedTypeSignature
type key = H.tval create : int -> ('a, 'trace) tval clear : ('a, 'trace) t -> unitclear tbl cancels and removes all the promises in tbl.
val reset : ('a, 'trace) t -> unitreset tbl cancels and removes all the promises in tbl, and resizes tbl to its initial size.
val find_or_make :
('a, 'trace) t ->
key ->
(unit -> ('a, 'trace) result Lwt.t) ->
('a, 'trace) result Lwt.tfind_or_make tbl k make behaves differently depending on k being bound in tbl:
- if
kis bound intblthenfind_or_make tbl k makereturns the promisepthatkis bound to. Thispmight be already fulfilled withOk _or it might be pending. Thispcannot be already fulfilled withError _or already rejected. This is becauseError/rejected promises are removed from the table automatically. Note however that if thispis pending,pmight become fulfilled withError _or become rejected. - if
kis not bound intblthenmake ()is called and the returned promisepis bound tokintbl. Thenpis returned. Whenpis resolved, it may be removed automatically fromtblas described above.
remove tbl k cancels the promise bound to k in tbl and removes it. If k is not bound in tbl it does nothing.
val iter_with_waiting_es :
(key -> 'a -> (unit, 'trace) result Lwt.t) ->
('a, 'trace) t ->
(unit, 'trace) result Lwt.titer_with_waiting_es f tbl iterates f over the bindings in tbl.
Specifically, for each binding (k, p) it waits for p to be fulfilled with Ok v and calls f k v. If p fulfills with Error _ or is rejected, then no call to f is made for this binding. Note however that an Error/rejection in one promise returned by f interrupts the iteration.
It processes bindings one after the other: it waits for both the bound promise to resolve and then the call promise to resolve before continuing to the next binding.
val iter_with_waiting_ep :
(key -> 'a -> (unit, 'error) result Lwt.t) ->
('a, 'error) t ->
(unit, 'error list) result Lwt.titer_with_waiting_ep f tbl iterates f over the bindings in tbl.
Specifically, for each binding (k, p) it waits for p to be fulfilled with Ok v and calls f k v. If p fulfills with Error _ or is rejected, then no call is made for this binding.
Note however that if one (or more) of the promises returned by f ends in Error/rejection, the final result of this promise is an Error/rejection. Even so, it only resolves once all the promises have.
It processes all bindings concurrently: it concurrently waits for all the bound promises to resolve and calls f as they resolve.
val fold_with_waiting_es :
(key -> 'a -> 'b -> ('b, 'trace) result Lwt.t) ->
('a, 'trace) t ->
'b ->
('b, 'trace) result Lwt.tfold_with_waiting_es f tbl init folds init with f over the bindings in tbl.
Specifically, for each binding (k, p) it waits for p to be fulfilled with Ok v and determines the next accumulator by calling f k v acc. If p fulfills with Error _ or is rejected, then no call is made for this binding.
It processes bindings one after the other.
fold_promises f tbl init folds over the table, passing the raw promises to f. This means that f can observe Error/rejections.
This can be used to, e.g., count the number of resolved/unresolved promises.
fold_resolved f tbl init folds over the already resolved promises of tbl. More specifically, it folds over the v for all the promises fulfilled with Ok v that are bound in tbl.
val length : ('a, 'trace) t -> intval stats : ('a, 'trace) t -> Hashtbl.statistics