Module Opaque.String
include Binable.S
include Binable.S_only_functions with type t := t
- val bin_size_t : t Size.sizer
- val bin_write_t : t Write.writer
- val bin_read_t : t Read.reader
- val __bin_read_t__ : (int -> t) Read.reader
- This function only needs implementation if - texposed to be a polymorphic variant. Despite what the type reads, this does *not* produce a function after reading; instead it takes the constructor tag (int) before reading and reads the rest of the variant- tafterwards.
- val bin_shape_t : Shape.t
- val bin_writer_t : t Type_class.writer
- val bin_reader_t : t Type_class.reader
- val bin_t : t Type_class.t
- val length : t -> int
- For performance's concern, we require caller of - to_opaqueand- of_opaque_exnto pass in the- bufas the intermediate buffer for bin_prot conversion. These two functions will write bytes into the buffer, but will not resize the buffer. So the caller should prepare big enough buffer for their need.- For - of_opaque_exn t, the minimum buffer size should be- length t.- For - to_opaquethe necessary buffer size can be computed using- sizefrom Type_class.writer or you can catch the exception- Bin_prot.Common.Buffer_short(although the latter is not very reliable because some custom bin_io implementations raise a different exception).- Additional caveat: if the opaque blob is malformed/partial then - of_opaque_exncan read past the end of the blob, which can result in:- confusing/non-deterministic error messages (referring to the contents of bufrather than the contents of the blob)
- degraded performance (having to read through the buffer just to fail at the end)
 
- confusing/non-deterministic error messages (referring to the contents of 
- val to_opaque : buf:Common.buf -> 'a -> 'a Type_class.writer -> t
- val of_opaque_exn : buf:Common.buf -> t -> 'a Type_class.reader -> 'a