Module: Mangrove::Result
Abstract
- Extended by:
- T::Generic, T::Helpers, T::Sig
- Includes:
- Kernel
- Included in:
- Err, Ok
- Defined in:
- lib/mangrove/result.rb,
lib/mangrove/result/control_signal.rb
Overview
This module is abstract.
Subclasses must implement the ‘abstract` methods below.
Result is a type that represents either success (‘Ok`) or failure (`Err`).
Defined Under Namespace
Classes: ControlSignal, Err, Ok
Constant Summary
collapse
- OkType =
type_member
- ErrType =
type_member
Class Method Summary
collapse
Instance Method Summary
collapse
-
#==(other) ⇒ Boolean
abstract
-
#and(other) ⇒ Result[T.type_parameter(:NewOkType), ErrType]
abstract
-
#and_then(&block) ⇒ Result[T.type_parameter(:NewOkType), ErrType]
abstract
-
#and_then_wt(_t_new_ok, &block) ⇒ Result[T.type_parameter(:NewOkType), ErrType]
abstract
-
#err? ⇒ Boolean
abstract
-
#expect!(message) ⇒ OkType
abstract
-
#expect_with!(&block) ⇒ OkType
abstract
-
#map(&block) ⇒ Result[T.type_parameter(:NewOkType), T.type_parameter(:NewErrType)]
abstract
-
#map_err(&block) ⇒ Result[OkType, T.type_parameter(:NewErrType)]
abstract
-
#map_err_wt(_t_new_err, &block) ⇒ Result[OkType, T.type_parameter(:NewErrType)]
abstract
-
#map_ok(&block) ⇒ Result[T.type_parameter(:NewOkType), ErrType]
abstract
-
#map_ok_wt(_t_new_ok, &block) ⇒ Result[T.type_parameter(:NewOkType), ErrType]
abstract
-
#map_wt(_t_new_ok, _t_new_err, &block) ⇒ Result[T.type_parameter(:NewOkType), T.type_parameter(:NewErrType)]
abstract
-
#ok? ⇒ Boolean
abstract
-
#or(other) ⇒ Result[OkType, ErrType]
abstract
-
#or_else(&block) ⇒ Result[OkType, T.type_parameter(:NewErrType)]
abstract
-
#or_else_wt(_t_new_err, &block) ⇒ Result[OkType, T.type_parameter(:NewErrType)]
abstract
-
#unwrap! ⇒ OkType
abstract
-
#unwrap_or_raise!(exception) ⇒ OkType
abstract
-
#unwrap_or_raise_inner! ⇒ OkType
abstract
Class Method Details
.err(inner) ⇒ Result::Err[T.type_parameter(:OkType), T.type_parameter(:ErrType)]
112
113
114
|
# File 'lib/mangrove/result.rb', line 112
def err(inner)
Result::Err[T.type_parameter(:OkType), T.type_parameter(:ErrType)].new(inner)
end
|
.err_wt(_t_ok, inner) ⇒ Result::Err[T.type_parameter(:OkType), T.type_parameter(:ErrType)]
117
118
119
|
# File 'lib/mangrove/result.rb', line 117
def err_wt(_t_ok, inner)
Result::Err[T.type_parameter(:OkType), T.type_parameter(:ErrType)].new(inner)
end
|
.from_results(results) ⇒ Result[T::Enumerable[T.type_parameter(:T)], T::Enumerable[T.type_parameter(:E)]]
89
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/mangrove/result.rb', line 89
def from_results(results)
errs = results.filter(&:err?)
if errs.empty?
Result::Ok[T::Enumerable[T.type_parameter(:T)], T::Enumerable[T.type_parameter(:E)]].new(results.map { |r| T.cast(r, Result::Ok[T.type_parameter(:T), T.type_parameter(:E)]).ok_inner })
else
Result::Err[T::Enumerable[T.type_parameter(:T)], T::Enumerable[T.type_parameter(:E)]].new(errs.map { |r| T.cast(r, Result::Err[T.type_parameter(:T), T.type_parameter(:E)]).err_inner })
end
end
|
.ok(inner) ⇒ Result::Ok[T.type_parameter(:OkType), T.type_parameter(:ErrType)]
102
103
104
|
# File 'lib/mangrove/result.rb', line 102
def ok(inner)
Result::Ok[T.type_parameter(:OkType), T.type_parameter(:ErrType)].new(inner)
end
|
.ok_wt(inner, _t_err) ⇒ Result::Ok[T.type_parameter(:OkType), T.type_parameter(:ErrType)]
107
108
109
|
# File 'lib/mangrove/result.rb', line 107
def ok_wt(inner, _t_err)
Result::Ok[T.type_parameter(:OkType), T.type_parameter(:ErrType)].new(inner)
end
|
Instance Method Details
#==(other) ⇒ Boolean
22
|
# File 'lib/mangrove/result.rb', line 22
def ==(other); end
|
#and(other) ⇒ Result[T.type_parameter(:NewOkType), ErrType]
64
|
# File 'lib/mangrove/result.rb', line 64
def and(other); end
|
#and_then(&block) ⇒ Result[T.type_parameter(:NewOkType), ErrType]
67
|
# File 'lib/mangrove/result.rb', line 67
def and_then(&block); end
|
#and_then_wt(_t_new_ok, &block) ⇒ Result[T.type_parameter(:NewOkType), ErrType]
70
|
# File 'lib/mangrove/result.rb', line 70
def and_then_wt(_t_new_ok, &block); end
|
#err? ⇒ Boolean
28
|
# File 'lib/mangrove/result.rb', line 28
def err?; end
|
#expect!(message) ⇒ OkType
40
|
# File 'lib/mangrove/result.rb', line 40
def expect!(message); end
|
#expect_with!(&block) ⇒ OkType
43
|
# File 'lib/mangrove/result.rb', line 43
def expect_with!(&block); end
|
#map(&block) ⇒ Result[T.type_parameter(:NewOkType), T.type_parameter(:NewErrType)]
46
|
# File 'lib/mangrove/result.rb', line 46
def map(&block); end
|
#map_err(&block) ⇒ Result[OkType, T.type_parameter(:NewErrType)]
58
|
# File 'lib/mangrove/result.rb', line 58
def map_err(&block); end
|
#map_err_wt(_t_new_err, &block) ⇒ Result[OkType, T.type_parameter(:NewErrType)]
61
|
# File 'lib/mangrove/result.rb', line 61
def map_err_wt(_t_new_err, &block); end
|
#map_ok(&block) ⇒ Result[T.type_parameter(:NewOkType), ErrType]
52
|
# File 'lib/mangrove/result.rb', line 52
def map_ok(&block); end
|
#map_ok_wt(_t_new_ok, &block) ⇒ Result[T.type_parameter(:NewOkType), ErrType]
55
|
# File 'lib/mangrove/result.rb', line 55
def map_ok_wt(_t_new_ok, &block); end
|
#map_wt(_t_new_ok, _t_new_err, &block) ⇒ Result[T.type_parameter(:NewOkType), T.type_parameter(:NewErrType)]
49
|
# File 'lib/mangrove/result.rb', line 49
def map_wt(_t_new_ok, _t_new_err, &block); end
|
#ok? ⇒ Boolean
25
|
# File 'lib/mangrove/result.rb', line 25
def ok?; end
|
73
|
# File 'lib/mangrove/result.rb', line 73
def or(other); end
|
#or_else(&block) ⇒ Result[OkType, T.type_parameter(:NewErrType)]
76
|
# File 'lib/mangrove/result.rb', line 76
def or_else(&block); end
|
#or_else_wt(_t_new_err, &block) ⇒ Result[OkType, T.type_parameter(:NewErrType)]
79
|
# File 'lib/mangrove/result.rb', line 79
def or_else_wt(_t_new_err, &block); end
|
31
|
# File 'lib/mangrove/result.rb', line 31
def unwrap!; end
|
#unwrap_or_raise!(exception) ⇒ OkType
34
|
# File 'lib/mangrove/result.rb', line 34
def unwrap_or_raise!(exception); end
|
#unwrap_or_raise_inner! ⇒ OkType
37
|
# File 'lib/mangrove/result.rb', line 37
def unwrap_or_raise_inner!; end
|