(* * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. *) open! NS0 module String = ContainersLabels.String let rtake n s = let l = String.length s in if n >= l then s else String.sub s ~pos:(l - n) ~len:n let rdrop n s = let l = String.length s in if n >= l then "" else String.sub s ~pos:0 ~len:(l - n) let rtake_drop n s = (rtake n s, rdrop n s) module T = struct type t = string [@@deriving compare, equal, hash, sexp] end include T include String let index_exn = index let index = index_opt let index_from_exn = index_from let index_from = index_from_opt let rindex_exn = rindex let rindex = rindex_opt let rindex_from_exn = rindex_from let rindex_from = rindex_from_opt module Set = Set.Make (T) module Map = Map.Make (T) module Tbl = HashTable.Make (T)