Blob.Make
Functor building an implementation of the blob structure. The functor returns a structure containing a type hash
of digests and a type t
of blobs (structurally equal to t
).
module Hash : sig ... end
type hash = Hash.t
type nonrec t = t
digest t
associates a hash
to any value of t
. It is guaranteed that if x = y
or compare x y = 0
, then digest x = digest y
.
val hash : t -> int
hash blob
associates a non-negative integer to any value of t
. It is guaranteed that if x = y
or compare x y = 0
, then hash x = hash y
.
module Set : Stdlib.Set.S with type elt = t
module Map : Stdlib.Map.S with type key = t
val length : t -> int64
val of_cstruct : Cstruct.t -> t
of_cstruct cs
is the blob from the given Cstruct.t
cs
. This function does not take the ownership on cs
.
Note. If the user set the given cs
, it updates the blob too. This function does not copy the given Cstruct.t
.
let cs = Cstruct.of_string "Hello" in
let blob = Blob.of_cstruct cs in
Blob.digest blob ;;
- : hash = 5ab2f8a4323abafb10abb68657d9d39f1a775057
Cstruct.set_char cs 0 'V' ;;
- : unit = ()
Blob.digest blob ;;
- : hash = 4081c40614b490bea69ea2ed8fdfdb86f04b5579
val to_cstruct : t -> Cstruct.t
to_cstruct blob
is the Cstruct.t
from the given blob. This function does not create a fresh Cstruct.t
,
val of_string : string -> t
of_string str
is the blob from the given string
str
.
Note. Despite of_cstruct
, of_string
does a copy of the given string
.
val to_string : t -> string
to_string blob
is the string
from the given blob.