Bytes.Stream
Byte streams.
Byte streams are sequences of non-empty byte slices ended by a single Slice.eod
slice. They have no concrete incarnation, they are observed by Bytes.Reader
s and Bytes.Writer
s.
See the quick start and read more about streams in the tutorial.
The type for stream positions.
The position of a stream is the zero-based byte index of the next byte to read or write. It can also be seen as the count of bytes read or written by a stream reader or writer.
The type for stream formats. An identifier for the format of read or written bytes. Favour mime types or lowercased file extensions without the dot.
Read more about errors in the tutorial.
The type for stream errors. Stream formats add their own cases to this type. See an example.
exception Error of error * error_context
The exception raised by streams reader, writers and their creation functions.
val error_message : (error * error_context) -> string
error_message e
turns error e
into an error message for humans.
val error_to_result : (error * error_context) -> ('a, string) Stdlib.result
error_to_result e
is Result.Error (error_message e)
.
val make_format_error :
format:format ->
case:('e -> error) ->
message:(error -> string) ->
'e format_error
make_format_error ~format ~case ~message
describes the type of error for format format
:
format
identifies the stream format
.case
is the function that injects the type into error
.message
is a function that must stringify the results of case
.See an example.
val error : 'e format_error -> ?context:[ `R | `W ] -> 'e -> 'a
error fmt e
errors with e
for a stream fmt
by raising an Error
exception.
The type for stream limits errors.
val limit_error : int format_error
limit_error
is a stream limit error.