Zstd exposes multiple API flavors which can be used to transform strings into strings. The
'a t type encodes the various ways to return a string from Zstd's functions into the OCaml world.
in_buffer s ~pos ~len to Zstd functions will cause them to output their result in the buffer
s.(pos) ... s.(pos+len), and return the actual length that was used.
in_buffer iobuf to Zstd functions will cause them to output their result in the iobuf.
val allocate_string : size_limit:int option -> string t
allocate_string to Zstd functions will cause them to allocate an ocaml string to contain their result.