Extensions to the String module
include module type of Stdlib.String;
let make: int => char => string;
let init: int => (int => char) => string;
let length: string => int;
let get: string => int => char;
let of_bytes: bytes => string;
let to_bytes: string => bytes;
let blit: string => int => bytes => int => int => unit;
let concat: string => list(string) => string;
let cat: string => string => string;
let equal: t => t => bool;
let compare: t => t => int;
let starts_with: prefix:string => string => bool;
let ends_with: suffix:string => string => bool;
let contains_from: string => int => char => bool;
let rcontains_from: string => int => char => bool;
let contains: string => char => bool;
let sub: string => int => int => string;
let split_on_char: char => string => list(string);
let map: (char => char) => string => string;
let mapi: (int => char => char) => string => string;
let fold_left: ('acc => char => 'acc) => 'acc => string => 'acc;
let fold_right: (char => 'acc => 'acc) => string => 'acc => 'acc;
let exists: (char => bool) => string => bool;
let trim: string => string;
let escaped: string => string;
let uppercase_ascii: string => string;
let lowercase_ascii: string => string;
let capitalize_ascii: string => string;
let uncapitalize_ascii: string => string;
let iter: (char => unit) => string => unit;
let iteri: (int => char => unit) => string => unit;
let index_from: string => int => char => int;
let index_from_opt: string => int => char => option(int);
let rindex_from: string => int => char => int;
let rindex_from_opt: string => int => char => option(int);
let index: string => char => int;
let index_opt: string => char => option(int);
let rindex: string => char => int;
let rindex_opt: string => char => option(int);
let to_seq: t => Stdlib.Seq.t(char);
let to_seqi: t => Stdlib.Seq.t((int, char));
let of_seq: Stdlib.Seq.t(char) => t;
let get_utf_8_uchar: t => int => Stdlib.Uchar.utf_decode;
let is_valid_utf_8: t => bool;
let get_utf_16be_uchar: t => int => Stdlib.Uchar.utf_decode;
let is_valid_utf_16be: t => bool;
let get_utf_16le_uchar: t => int => Stdlib.Uchar.utf_decode;
let is_valid_utf_16le: t => bool;
let get_uint8: string => int => int;
let get_int8: string => int => int;
let get_uint16_ne: string => int => int;
let get_uint16_be: string => int => int;
let get_uint16_le: string => int => int;
let get_int16_ne: string => int => int;
let get_int16_be: string => int => int;
let get_int16_le: string => int => int;
let get_int32_ne: string => int => int32;
let seeded_hash: int => t => int;
let get_int32_be: string => int => int32;
let get_int32_le: string => int => int32;
let get_int64_ne: string => int => int64;
let get_int64_be: string => int => int64;
let get_int64_le: string => int => int64;
let unsafe_get: string => int => char;
let unsafe_blit: string => int => bytes => int => int => unit;
module Set: Stdlib.Set.S with type elt = string;
module Map: Stdlib.Map.S with type key = string;
module Tbl: Stdlib.Hashtbl.S with type key = string;
let print: Stdlib.Format.formatter => t => unit;
let for_all: (char => bool) => t => bool;