sig
  type ('a, 'b) t = ('a, 'b) Result.result
  val ok : '-> ('a, 'b) Result.result
  val error : '-> ('a, 'b) Result.result
  val reword_error :
    ('-> 'c) -> ('a, 'b) Result.result -> ('a, 'c) Result.result
  val get_ok : ('a, 'b) Result.result -> 'a
  val get_error : ('a, 'b) Result.result -> 'b
  val pp :
    pp_ok:(Format.formatter -> '-> unit) ->
    pp_error:(Format.formatter -> '-> unit) ->
    Format.formatter -> ('a, 'b) Result.result -> unit
  val return : '-> ('a, 'b) Result.result
  val fail : '-> ('a, 'b) Result.result
  val bind :
    ('a, 'b) Result.result ->
    ('-> ('c, 'b) Result.result) -> ('c, 'b) Result.result
  val map : ('-> 'c) -> ('a, 'b) Result.result -> ('c, 'b) Result.result
  val join :
    (('a, 'b) Result.result, 'b) Result.result -> ('a, 'b) Result.result
  val ( >>= ) :
    ('a, 'b) Result.result ->
    ('-> ('c, 'b) Result.result) -> ('c, 'b) Result.result
  val ( >>| ) :
    ('a, 'b) Result.result -> ('-> 'c) -> ('c, 'b) Result.result
  module Infix :
    sig
      val ( >>= ) :
        ('a, 'b) Result.result ->
        ('-> ('c, 'b) Result.result) -> ('c, 'b) Result.result
      val ( >>| ) :
        ('a, 'b) Result.result -> ('-> 'c) -> ('c, 'b) Result.result
    end
  type msg = [ `Msg of string ]
  val msg : string -> [> Rresult.R.msg ]
  val msgf :
    ('a, Format.formatter, unit, [> Rresult.R.msg ]) Pervasives.format4 -> 'a
  val pp_msg : Format.formatter -> Rresult.R.msg -> unit
  val error_msg : string -> ('a, [> Rresult.R.msg ]) Result.result
  val error_msgf :
    ('a, Format.formatter, unit, ('b, [> Rresult.R.msg ]) Result.result)
    Pervasives.format4 -> 'a
  val reword_error_msg :
    ?replace:bool ->
    (string -> Rresult.R.msg) ->
    ('a, Rresult.R.msg) Result.result ->
    ('a, [> Rresult.R.msg ]) Result.result
  val error_to_msg :
    pp_error:(Format.formatter -> '-> unit) ->
    ('a, 'b) Result.result -> ('a, [> Rresult.R.msg ]) Result.result
  val error_msg_to_invalid_arg : ('a, Rresult.R.msg) Result.result -> 'a
  val open_error_msg :
    ('a, Rresult.R.msg) Result.result ->
    ('a, [> Rresult.R.msg ]) Result.result
  type exn_trap = [ `Exn_trap of exn * Printexc.raw_backtrace ]
  val pp_exn_trap : Format.formatter -> Rresult.R.exn_trap -> unit
  val trap_exn :
    ('-> 'b) -> '-> ('b, [> Rresult.R.exn_trap ]) Result.result
  val error_exn_trap_to_msg :
    ('a, Rresult.R.exn_trap) Result.result ->
    ('a, [> Rresult.R.msg ]) Result.result
  val open_error_exn_trap :
    ('a, Rresult.R.exn_trap) Result.result ->
    ('a, [> Rresult.R.exn_trap ]) Result.result
  val is_ok : ('a, 'b) Result.result -> bool
  val is_error : ('a, 'b) Result.result -> bool
  val equal :
    ok:('-> '-> bool) ->
    error:('-> '-> bool) ->
    ('a, 'b) Result.result -> ('a, 'b) Result.result -> bool
  val compare :
    ok:('-> '-> int) ->
    error:('-> '-> int) ->
    ('a, 'b) Result.result -> ('a, 'b) Result.result -> int
  val to_option : ('a, 'b) Result.result -> 'a option
  val of_option :
    none:(unit -> ('a, 'b) Result.result) ->
    'a option -> ('a, 'b) Result.result
  val to_presult : ('a, 'b) Result.result -> [> `Error of '| `Ok of 'a ]
  val of_presult : [< `Error of '| `Ok of 'a ] -> ('a, 'b) Result.result
  val ignore_error : use:'-> ('a, 'b) Result.result -> 'a
  val kignore_error :
    use:('a, 'c) Result.result ->
    ('a, 'b) Result.result -> ('a, 'c) Result.result
end