include Irmin.Indexable.S with type key = Val.contents_key
Read-only stores are store where it is only possible to read existing values.
type key = Val.contents_key
The type for keys.
find t k is
Some v if
k is associated to
k is not present in
Write the contents of a value to the store, and obtain its key.
add but allows specifying the value's hash directly. The backend might choose to discard that hash and/or can be corrupt if the hash is not consistent.
Indexing maps the hash of a value to a corresponding key of that value in the store. For stores that are addressed by hashes directly, this is typically
fun _t h -> Lwt.return (Key.of_hash h); for stores with more complex addressing schemes,
index may attempt a lookup operation in the store.
In general, indexing is best-effort and reveals no information about the membership of the value in the store. In particular:
index t hash = Some keydoesn't guarantee
mem t key: the value with hash
hashmay still be absent from the store;
index t hash = Nonedoesn't guarantee that there is no
mem t keyand
Key.to_hash key = hash: the value may still be present in the store under a key that is not indexed.
merge t lifts the merge functions defined on contents values to contents key. The merge function will: (i) read the values associated with the given keys, (ii) use the merge function defined on values and (iii) write the resulting values into the store to get the resulting key. See
If any of these operations fail, return
module Val : sig ... end