Module Private.Validated_string

Utils to manipulate abstract types that are strings in their implementation.

module type S = sig ... end
module type X = sig ... end
module Make (_ : X) : S with type t := string

Make returns an interface that exposes the fact that t = string so this equality can be used by other functions in the implementation. However, the expected pattern is that such equality is hidden by the inclusion of S in the mli of a validated string. See Author for an example.