Module Maybe_explicit.Both

type 'a maybe_explicit := 'a t
type 'a t = private {
  1. explicit : 'a;
  2. drop_axis_if_all_defaults : 'a;
}
type 'a opt_map_result =
  1. | Neither
  2. | One of 'a maybe_explicit
  3. | Both of 'a t
val create : (explicitness -> 'a) -> 'a t
val extract_list : 'a t -> 'a list
val all : 'a t list -> 'a list t
val opt_map : 'a t -> f:('a -> 'b option) -> 'b opt_map_result
val opt_fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c option) -> 'b * 'c opt_map_result