Sha256: f07b0774048b4adf70a442849c81bd80ca275a132d10288965025520c6700803
Contents?: true
Size: 1.16 KB
Versions: 2
Compression:
Stored size: 1.16 KB
Contents
# frozen_string_literal: true module Mutant # Isolation mechanism class Isolation include AbstractType # Isolated computation result class Result include AbstractType, Adamantium abstract_method :error abstract_method :next abstract_method :value # Add error on top of current result # # @param [Result] error # # @return [Result] def add_error(error) ErrorChain.new(error, self) end # Test for success # # @return [Boolean] def success? instance_of?(Success) end # Succesful result producing value class Success < self include Concord::Public.new(:value) end # Success # Unsuccessful result by unexpected exception class Exception < self include Concord::Public.new(:value) end # Error # Result when there where many results class ErrorChain < Result include Concord::Public.new(:value, :next) end # ChainError end # Result # Call block in isolation # # @return [Result] # the blocks result abstract_method :call end # Isolation end # Mutant
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mutant-0.8.24 | lib/mutant/isolation.rb |
mutant-0.8.23 | lib/mutant/isolation.rb |