sig   type t = Astring.String.sub   val empty : Astring.String.sub   val v : ?start:int -> ?stop:int -> string -> Astring.String.sub   val start_pos : Astring.String.sub -> int   val stop_pos : Astring.String.sub -> int   val base_string : Astring.String.sub -> string   val length : Astring.String.sub -> int   val get : Astring.String.sub -> int -> char   val get_byte : Astring.String.sub -> int -> int   val unsafe_get : Astring.String.sub -> int -> char   val unsafe_get_byte : Astring.String.sub -> int -> int   val head : ?rev:bool -> Astring.String.sub -> char option   val get_head : ?rev:bool -> Astring.String.sub -> char   val of_string : string -> Astring.String.sub   val to_string : Astring.String.sub -> string   val rebase : Astring.String.sub -> Astring.String.sub   val hash : Astring.String.sub -> int   val start : Astring.String.sub -> Astring.String.sub   val stop : Astring.String.sub -> Astring.String.sub   val base : Astring.String.sub -> Astring.String.sub   val tail : ?rev:bool -> Astring.String.sub -> Astring.String.sub   val extend :     ?rev:bool ->     ?max:int ->     ?sat:(char -> bool) -> Astring.String.sub -> Astring.String.sub   val reduce :     ?rev:bool ->     ?max:int ->     ?sat:(char -> bool) -> Astring.String.sub -> Astring.String.sub   val extent : Astring.String.sub -> Astring.String.sub -> Astring.String.sub   val overlap :     Astring.String.sub -> Astring.String.sub -> Astring.String.sub option   val append : Astring.String.sub -> Astring.String.sub -> Astring.String.sub   val concat :     ?sep:Astring.String.sub -> Astring.String.sub list -> Astring.String.sub   val is_empty : Astring.String.sub -> bool   val is_prefix : affix:Astring.String.sub -> Astring.String.sub -> bool   val is_infix : affix:Astring.String.sub -> Astring.String.sub -> bool   val is_suffix : affix:Astring.String.sub -> Astring.String.sub -> bool   val for_all : (char -> bool) -> Astring.String.sub -> bool   val exists : (char -> bool) -> Astring.String.sub -> bool   val same_base : Astring.String.sub -> Astring.String.sub -> bool   val equal_bytes : Astring.String.sub -> Astring.String.sub -> bool   val compare_bytes : Astring.String.sub -> Astring.String.sub -> int   val equal : Astring.String.sub -> Astring.String.sub -> bool   val compare : Astring.String.sub -> Astring.String.sub -> int   val with_range :     ?first:int -> ?len:int -> Astring.String.sub -> Astring.String.sub   val with_index_range :     ?first:int -> ?last:int -> Astring.String.sub -> Astring.String.sub   val trim : ?drop:(char -> bool) -> Astring.String.sub -> Astring.String.sub   val span :     ?rev:bool ->     ?min:int ->     ?max:int ->     ?sat:(char -> bool) ->     Astring.String.sub -> Astring.String.sub * Astring.String.sub   val take :     ?rev:bool ->     ?min:int ->     ?max:int ->     ?sat:(char -> bool) -> Astring.String.sub -> Astring.String.sub   val drop :     ?rev:bool ->     ?min:int ->     ?max:int ->     ?sat:(char -> bool) -> Astring.String.sub -> Astring.String.sub   val cut :     ?rev:bool ->     sep:Astring.String.sub ->     Astring.String.sub -> (Astring.String.sub * Astring.String.sub) option   val cuts :     ?rev:bool ->     ?empty:bool ->     sep:Astring.String.sub -> Astring.String.sub -> Astring.String.sub list   val fields :     ?empty:bool ->     ?is_sep:(char -> bool) -> Astring.String.sub -> Astring.String.sub list   val find :     ?rev:bool ->     (char -> bool) -> Astring.String.sub -> Astring.String.sub option   val find_sub :     ?rev:bool ->     sub:Astring.String.sub -> Astring.String.sub -> Astring.String.sub option   val filter : (char -> bool) -> Astring.String.sub -> Astring.String.sub   val filter_map :     (char -> char option) -> Astring.String.sub -> Astring.String.sub   val map : (char -> char) -> Astring.String.sub -> Astring.String.sub   val mapi :     (int -> char -> char) -> Astring.String.sub -> Astring.String.sub   val fold_left : ('-> char -> 'a) -> '-> Astring.String.sub -> 'a   val fold_right : (char -> '-> 'a) -> Astring.String.sub -> '-> 'a   val iter : (char -> unit) -> Astring.String.sub -> unit   val iteri : (int -> char -> unit) -> Astring.String.sub -> unit   val pp : Format.formatter -> Astring.String.sub -> unit   val dump : Format.formatter -> Astring.String.sub -> unit   val dump_raw : Format.formatter -> Astring.String.sub -> unit   val of_char : char -> Astring.String.sub   val to_char : Astring.String.sub -> char option   val of_bool : bool -> Astring.String.sub   val to_bool : Astring.String.sub -> bool option   val of_int : int -> Astring.String.sub   val to_int : Astring.String.sub -> int option   val of_nativeint : nativeint -> Astring.String.sub   val to_nativeint : Astring.String.sub -> nativeint option   val of_int32 : int32 -> Astring.String.sub   val to_int32 : Astring.String.sub -> int32 option   val of_int64 : int64 -> Astring.String.sub   val to_int64 : Astring.String.sub -> int64 option   val of_float : float -> Astring.String.sub   val to_float : Astring.String.sub -> float option end