`type t``= private Core.Bigstring.t```

Immutable sequences of bytes which can be windowed efficiently.

`include sig ... end`
`val sexp_of_t : t ‑> Base.Sexp.t`
`val compare : t ‑> t ‑> int`
`val hash_fold_t : Base.Hash.state ‑> t ‑> Base.Hash.state`
`val hash : t ‑> Base.Hash.hash_value`
`val of_bigstring : Core.Bigstring.t ‑> t`
`val to_bigstring : t ‑> Core.Bigstring.t`
`include Core.Stringable.S with type t := t`
`type t`````
`val of_string : string ‑> t`
`val to_string : t ‑> string`
`include Email_message__.String_monoidable.S with type t := t`
`type t`````
`val to_string_monoid : t ‑> Email_message.String_monoid.t`
`val to_lexbuf : t ‑> Lexing.lexbuf`
`val empty : t`

Empty, immutable Bigstring

`val length : t ‑> int`
`val sub : ?⁠pos:int ‑> ?⁠len:int ‑> t ‑> t`
`val foldi : t ‑> init:'b ‑> f:(int ‑> 'b ‑> char ‑> 'b) ‑> 'b`
`val lines_seq : ?⁠include_empty_last_line:unit ‑> t ‑> t Core.Sequence.t`

`include_empty_last_line` determines whether a string that ends in "\n" has an empty string as the last line.

`iter_lines` and `split_lines` do not include an empty last line.

`val iter_lines : t ‑> f:(t ‑> unit) ‑> unit`
`val split_lines : t ‑> t list`
`val of_bigbuffer_volatile : Core.Bigbuffer.t ‑> t`

Gets a bigstring from a bigbuffer with minimal memory overhead.

`val of_string_monoid : Email_message.String_monoid.t ‑> t`
`val substr_index : ?⁠pos:int ‑> t ‑> pattern:t ‑> int option`
`module Stable : sig ... end`