Sha256: 7c70a39b9b64f4dc7ebe1b9fd124d3def99ac83074723fb77726260db23b90d0
Contents?: true
Size: 1010 Bytes
Versions: 2
Compression:
Stored size: 1010 Bytes
Contents
# frozen_string_literal: true module SumsUp # To parahprase Rust's std::result docs[0]: # # Result is a type used for returning and propagating errors. # Result.success(value) represents a success and contains a value; # Result.failure(error) represents an error with a propagated error. # # [0] https://doc.rust-lang.org/std/result/ Result = SumsUp.define(failure: :error, success: :value) do # Yield, wrapping the result in Result.success, or wrap the raised error # in Result.failure. def self.from_block success(yield) rescue StandardError => e failure(e) end # Map a function across the successful value (if present). def map match do |m| m.success { |value| Result.success(yield(value)) } m.failure self end end # Map a function across the error (if present). def map_failure match do |m| m.success self m.failure { |error| Result.failure(yield(error)) } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sums_up-1.1.0 | lib/sums_up/result.rb |
sums_up-1.0.0 | lib/sums_up/result.rb |