u-case 4.0.0 → 4.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.travis.sh +32 -10
 - data/Gemfile +20 -9
 - data/README.md +103 -99
 - data/README.pt-BR.md +106 -105
 - data/lib/micro/case.rb +70 -14
 - data/lib/micro/case/result.rb +36 -6
 - data/lib/micro/case/result/transitions.rb +0 -1
 - data/lib/micro/case/result/wrapper.rb +50 -0
 - data/lib/micro/case/safe.rb +1 -1
 - data/lib/micro/case/utils.rb +19 -10
 - data/lib/micro/case/version.rb +1 -1
 - data/lib/micro/cases.rb +7 -0
 - data/lib/micro/cases/error.rb +13 -0
 - data/lib/micro/cases/flow.rb +27 -14
 - data/lib/micro/cases/map.rb +39 -0
 - data/lib/micro/cases/safe/flow.rb +2 -2
 - data/lib/micro/cases/utils.rb +21 -0
 - metadata +6 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 472d6a0f07c2e365dcd4157440888be4a140fabd171c1f8bfdf1f30ffd4c109f
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 3b255504d5c6c886bcc9aa167ce5ed57930002b92cb730410ec835a17840a15b
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 99c0bd68b866a0a999f86dcd54a13587c05319c068635821e7fc0470f80b92608186d2bb7d263549e11f73951cff06e8f15c5f7586600b660abfb356ab3c5eaf
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 2d22c278fc9f1f6e2f845d1477295314efa6b5fd627019d4e4f086ed1542d89d2c14c9df5b466babc4b1d0036c7aba8f0ea6a22163e5314dc1a4d7c3a0482465
         
     | 
    
        data/.travis.sh
    CHANGED
    
    | 
         @@ -2,22 +2,44 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            ruby_v=$(ruby -v)
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
            if [[ $ruby_v =~ '2.2.' ]] || [[ $ruby_v =~ '2.3.' ]]; then
         
     | 
| 
      
 6 
     | 
    
         
            +
              ACTIVERECORD_VERSION='3.2' bundle update
         
     | 
| 
      
 7 
     | 
    
         
            +
              ACTIVERECORD_VERSION='3.2' ENABLE_TRANSITIONS='true' bundle exec rake test
         
     | 
| 
      
 8 
     | 
    
         
            +
              ACTIVERECORD_VERSION='3.2' ENABLE_TRANSITIONS='false' bundle exec rake test
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              ACTIVERECORD_VERSION='4.0' bundle update
         
     | 
| 
      
 11 
     | 
    
         
            +
              ACTIVERECORD_VERSION='4.0' ENABLE_TRANSITIONS='true' bundle exec rake test
         
     | 
| 
      
 12 
     | 
    
         
            +
              ACTIVERECORD_VERSION='4.0' ENABLE_TRANSITIONS='false' bundle exec rake test
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              ACTIVERECORD_VERSION='4.1' bundle update
         
     | 
| 
      
 15 
     | 
    
         
            +
              ACTIVERECORD_VERSION='4.1' ENABLE_TRANSITIONS='true' bundle exec rake test
         
     | 
| 
      
 16 
     | 
    
         
            +
              ACTIVERECORD_VERSION='4.1' ENABLE_TRANSITIONS='false' bundle exec rake test
         
     | 
| 
      
 17 
     | 
    
         
            +
            fi
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            ACTIVERECORD_VERSION='4.2' bundle update
         
     | 
| 
      
 20 
     | 
    
         
            +
            ACTIVERECORD_VERSION='4.2' ENABLE_TRANSITIONS='true' bundle exec rake test
         
     | 
| 
      
 21 
     | 
    
         
            +
            ACTIVERECORD_VERSION='4.2' ENABLE_TRANSITIONS='false' bundle exec rake test
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            ACTIVERECORD_VERSION='5.0' bundle update
         
     | 
| 
      
 24 
     | 
    
         
            +
            ACTIVERECORD_VERSION='5.0' ENABLE_TRANSITIONS='true' bundle exec rake test
         
     | 
| 
      
 25 
     | 
    
         
            +
            ACTIVERECORD_VERSION='5.0' ENABLE_TRANSITIONS='false' bundle exec rake test
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            ACTIVERECORD_VERSION='5.1' bundle update
         
     | 
| 
      
 28 
     | 
    
         
            +
            ACTIVERECORD_VERSION='5.1' ENABLE_TRANSITIONS='true' bundle exec rake test
         
     | 
| 
      
 29 
     | 
    
         
            +
            ACTIVERECORD_VERSION='5.1' ENABLE_TRANSITIONS='false' bundle exec rake test
         
     | 
| 
       8 
30 
     | 
    
         | 
| 
       9 
31 
     | 
    
         
             
            if [[ ! $ruby_v =~ '2.2.0' ]]; then
         
     | 
| 
       10 
     | 
    
         
            -
               
     | 
| 
       11 
     | 
    
         
            -
               
     | 
| 
       12 
     | 
    
         
            -
               
     | 
| 
      
 32 
     | 
    
         
            +
              ACTIVERECORD_VERSION='5.2' bundle update
         
     | 
| 
      
 33 
     | 
    
         
            +
              ACTIVERECORD_VERSION='5.2' ENABLE_TRANSITIONS='true' bundle exec rake test
         
     | 
| 
      
 34 
     | 
    
         
            +
              ACTIVERECORD_VERSION='5.2' ENABLE_TRANSITIONS='false' bundle exec rake test
         
     | 
| 
       13 
35 
     | 
    
         
             
            fi
         
     | 
| 
       14 
36 
     | 
    
         | 
| 
       15 
37 
     | 
    
         
             
            if [[ $ruby_v =~ '2.5.' ]] || [[ $ruby_v =~ '2.6.' ]] || [[ $ruby_v =~ '2.7.' ]]; then
         
     | 
| 
       16 
     | 
    
         
            -
               
     | 
| 
       17 
     | 
    
         
            -
               
     | 
| 
       18 
     | 
    
         
            -
               
     | 
| 
      
 38 
     | 
    
         
            +
              ACTIVERECORD_VERSION='6.0' bundle update
         
     | 
| 
      
 39 
     | 
    
         
            +
              ACTIVERECORD_VERSION='6.0' ENABLE_TRANSITIONS='true' bundle exec rake test
         
     | 
| 
      
 40 
     | 
    
         
            +
              ACTIVERECORD_VERSION='6.0' ENABLE_TRANSITIONS='false' bundle exec rake test
         
     | 
| 
       19 
41 
     | 
    
         
             
            fi
         
     | 
| 
       20 
42 
     | 
    
         | 
| 
       21 
43 
     | 
    
         
             
            bundle update
         
     | 
| 
       22 
     | 
    
         
            -
            ENABLE_TRANSITIONS='false' bundle exec rake test
         
     | 
| 
       23 
44 
     | 
    
         
             
            ENABLE_TRANSITIONS='true' bundle exec rake test
         
     | 
| 
      
 45 
     | 
    
         
            +
            ENABLE_TRANSITIONS='false' bundle exec rake test
         
     | 
    
        data/Gemfile
    CHANGED
    
    | 
         @@ -2,19 +2,19 @@ source "https://rubygems.org" 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
            activerecord_version = ENV.fetch('ACTIVERECORD_VERSION', '6.1')
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
            activerecord = case activerecord_version
         
     | 
| 
       8 
8 
     | 
    
         
             
                          when '3.2' then '3.2.22'
         
     | 
| 
      
 9 
     | 
    
         
            +
                          when '4.0' then '4.0.13'
         
     | 
| 
      
 10 
     | 
    
         
            +
                          when '4.1' then '4.1.16'
         
     | 
| 
      
 11 
     | 
    
         
            +
                          when '4.2' then '4.2.11'
         
     | 
| 
      
 12 
     | 
    
         
            +
                          when '5.0' then '5.0.7'
         
     | 
| 
      
 13 
     | 
    
         
            +
                          when '5.1' then '5.1.7'
         
     | 
| 
       9 
14 
     | 
    
         
             
                          when '5.2' then '5.2.3'
         
     | 
| 
       10 
     | 
    
         
            -
                          when '6.0' then '6.0. 
     | 
| 
      
 15 
     | 
    
         
            +
                          when '6.0' then '6.0.3'
         
     | 
| 
       11 
16 
     | 
    
         
             
                          end
         
     | 
| 
       12 
17 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            if activemodel_version < '6.1.0'
         
     | 
| 
       14 
     | 
    
         
            -
              gem 'activemodel', activemodel, require: false
         
     | 
| 
       15 
     | 
    
         
            -
              gem 'activesupport', activemodel, require: false
         
     | 
| 
       16 
     | 
    
         
            -
            end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
18 
     | 
    
         
             
            simplecov_version =
         
     | 
| 
       19 
19 
     | 
    
         
             
              case RUBY_VERSION
         
     | 
| 
       20 
20 
     | 
    
         
             
              when /\A2.[23]/ then '~> 0.17.1'
         
     | 
| 
         @@ -23,9 +23,20 @@ simplecov_version = 
     | 
|
| 
       23 
23 
     | 
    
         
             
              end
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
            group :test do
         
     | 
| 
       26 
     | 
    
         
            -
              gem 'minitest',  
     | 
| 
      
 26 
     | 
    
         
            +
              gem 'minitest', activerecord_version < '4.1' ? '~> 4.2' : '~> 5.0'
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
              gem 'simplecov', simplecov_version, require: false
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              if activerecord
         
     | 
| 
      
 31 
     | 
    
         
            +
                sqlite3 =
         
     | 
| 
      
 32 
     | 
    
         
            +
                  case activerecord
         
     | 
| 
      
 33 
     | 
    
         
            +
                  when /\A6\.0/, nil then '~> 1.4.0'
         
     | 
| 
      
 34 
     | 
    
         
            +
                  else '~> 1.3.0'
         
     | 
| 
      
 35 
     | 
    
         
            +
                  end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                gem 'sqlite3', sqlite3
         
     | 
| 
      
 38 
     | 
    
         
            +
                gem 'activerecord', activerecord, require: 'active_record'
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
       29 
40 
     | 
    
         
             
            end
         
     | 
| 
       30 
41 
     | 
    
         | 
| 
       31 
42 
     | 
    
         
             
            pry_byebug_version =
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -6,7 +6,7 @@ 
     | 
|
| 
       6 
6 
     | 
    
         
             
            </p>
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            <p align="center">
         
     | 
| 
       9 
     | 
    
         
            -
              <img src="https://img.shields.io/badge/ruby 
     | 
| 
      
 9 
     | 
    
         
            +
              <img src="https://img.shields.io/badge/ruby->%3D%202.2.0-ruby.svg?colorA=99004d&colorB=cc0066" alt="Ruby">
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
              <a href="https://rubygems.org/gems/u-case">
         
     | 
| 
       12 
12 
     | 
    
         
             
                <img alt="Gem" src="https://img.shields.io/gem/v/u-case.svg?style=flat-square">
         
     | 
| 
         @@ -38,12 +38,13 @@ The main project goals are: 
     | 
|
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
            Version   | Documentation
         
     | 
| 
       40 
40 
     | 
    
         
             
            --------- | -------------
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 41 
     | 
    
         
            +
            unreleased| https://github.com/serradura/u-case/blob/main/README.md
         
     | 
| 
      
 42 
     | 
    
         
            +
            4.2.2     | https://github.com/serradura/u-case/blob/v4.x/README.md
         
     | 
| 
       42 
43 
     | 
    
         
             
            3.1.0     | https://github.com/serradura/u-case/blob/v3.x/README.md
         
     | 
| 
       43 
44 
     | 
    
         
             
            2.6.0     | https://github.com/serradura/u-case/blob/v2.x/README.md
         
     | 
| 
       44 
45 
     | 
    
         
             
            1.1.0     | https://github.com/serradura/u-case/blob/v1.x/README.md
         
     | 
| 
       45 
46 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
            > **Note:** Você entende português?  
     | 
| 
      
 47 
     | 
    
         
            +
            > **Note:** Você entende português? 🇧🇷 🇵🇹 Verifique o [README traduzido em pt-BR](https://github.com/serradura/u-case/blob/main/README.pt-BR.md).
         
     | 
| 
       47 
48 
     | 
    
         | 
| 
       48 
49 
     | 
    
         
             
            ## Table of Contents <!-- omit in toc -->
         
     | 
| 
       49 
50 
     | 
    
         
             
            - [Compatibility](#compatibility)
         
     | 
| 
         @@ -100,7 +101,8 @@ Version   | Documentation 
     | 
|
| 
       100 
101 
     | 
    
         | 
| 
       101 
102 
     | 
    
         
             
            | u-case         | branch  | ruby     |  activemodel  | u-attributes |
         
     | 
| 
       102 
103 
     | 
    
         
             
            | -------------- | ------- | -------- | ------------- | ------------ |
         
     | 
| 
       103 
     | 
    
         
            -
            |  
     | 
| 
      
 104 
     | 
    
         
            +
            | unreleased     | main    | >= 2.2.0 | >= 3.2, < 6.1 |       ~> 2.0 |
         
     | 
| 
      
 105 
     | 
    
         
            +
            | 4.2.2          | v4.x    | >= 2.2.0 | >= 3.2, < 6.1 |       ~> 2.0 |
         
     | 
| 
       104 
106 
     | 
    
         
             
            | 3.1.0          | v3.x    | >= 2.2.0 | >= 3.2, < 6.1 |       ~> 1.1 |
         
     | 
| 
       105 
107 
     | 
    
         
             
            | 2.6.0          | v2.x    | >= 2.2.0 | >= 3.2, < 6.1 |       ~> 1.1 |
         
     | 
| 
       106 
108 
     | 
    
         
             
            | 1.1.0          | v1.x    | >= 2.2.0 | >= 3.2, < 6.1 |       ~> 1.1 |
         
     | 
| 
         @@ -124,7 +126,7 @@ Version   | Documentation 
     | 
|
| 
       124 
126 
     | 
    
         
             
            Add this line to your application's Gemfile:
         
     | 
| 
       125 
127 
     | 
    
         | 
| 
       126 
128 
     | 
    
         
             
            ```ruby
         
     | 
| 
       127 
     | 
    
         
            -
            gem 'u-case', '~>  
     | 
| 
      
 129 
     | 
    
         
            +
            gem 'u-case', '~> 4.1.0'
         
     | 
| 
       128 
130 
     | 
    
         
             
            ```
         
     | 
| 
       129 
131 
     | 
    
         | 
| 
       130 
132 
     | 
    
         
             
            And then execute:
         
     | 
| 
         @@ -1198,42 +1200,44 @@ end 
     | 
|
| 
       1198 
1200 
     | 
    
         | 
| 
       1199 
1201 
     | 
    
         
             
            | Gem / Abstraction      | Iterations per second |       Comparison  |
         
     | 
| 
       1200 
1202 
     | 
    
         
             
            | -----------------      | --------------------: | ----------------: |
         
     | 
| 
       1201 
     | 
    
         
            -
            | Dry::Monads            |               
     | 
| 
       1202 
     | 
    
         
            -
            | **Micro::Case**        | 
     | 
| 
       1203 
     | 
    
         
            -
            | Interactor             |                
     | 
| 
       1204 
     | 
    
         
            -
            | Trailblazer::Operation |                
     | 
| 
       1205 
     | 
    
         
            -
            | Dry::Transaction       |                
     | 
| 
      
 1203 
     | 
    
         
            +
            | Dry::Monads            |              315635.1 | _**The Fastest**_ |
         
     | 
| 
      
 1204 
     | 
    
         
            +
            | **Micro::Case**        |               75837.7 |     4.16x slower  |
         
     | 
| 
      
 1205 
     | 
    
         
            +
            | Interactor             |               59745.5 |     5.28x slower  |
         
     | 
| 
      
 1206 
     | 
    
         
            +
            | Trailblazer::Operation |               28423.9 |    11.10x slower  |
         
     | 
| 
      
 1207 
     | 
    
         
            +
            | Dry::Transaction       |               10130.9 |    31.16x slower  |
         
     | 
| 
       1206 
1208 
     | 
    
         | 
| 
       1207 
1209 
     | 
    
         
             
            <details>
         
     | 
| 
       1208 
1210 
     | 
    
         
             
              <summary>Show the full <a href="https://github.com/evanphx/benchmark-ips">benchmark/ips</a> results.</summary>
         
     | 
| 
       1209 
1211 
     | 
    
         | 
| 
       1210 
1212 
     | 
    
         
             
            ```ruby
         
     | 
| 
       1211 
1213 
     | 
    
         
             
            # Warming up --------------------------------------
         
     | 
| 
       1212 
     | 
    
         
            -
            #           Interactor     5. 
     | 
| 
       1213 
     | 
    
         
            -
            # Trailblazer::Operation 
     | 
| 
       1214 
     | 
    
         
            -
            # 
     | 
| 
       1215 
     | 
    
         
            -
            # 
     | 
| 
       1216 
     | 
    
         
            -
            # 
     | 
| 
       1217 
     | 
    
         
            -
            # 
     | 
| 
       1218 
     | 
    
         
            -
            # 
     | 
| 
      
 1214 
     | 
    
         
            +
            #           Interactor     5.711k i/100ms
         
     | 
| 
      
 1215 
     | 
    
         
            +
            # Trailblazer::Operation
         
     | 
| 
      
 1216 
     | 
    
         
            +
            #                          2.283k i/100ms
         
     | 
| 
      
 1217 
     | 
    
         
            +
            #          Dry::Monads    31.130k i/100ms
         
     | 
| 
      
 1218 
     | 
    
         
            +
            #     Dry::Transaction   994.000  i/100ms
         
     | 
| 
      
 1219 
     | 
    
         
            +
            #          Micro::Case     7.911k i/100ms
         
     | 
| 
      
 1220 
     | 
    
         
            +
            #    Micro::Case::Safe     7.911k i/100ms
         
     | 
| 
      
 1221 
     | 
    
         
            +
            #  Micro::Case::Strict     6.248k i/100ms
         
     | 
| 
       1219 
1222 
     | 
    
         | 
| 
       1220 
1223 
     | 
    
         
             
            # Calculating -------------------------------------
         
     | 
| 
       1221 
     | 
    
         
            -
            #           Interactor      
     | 
| 
       1222 
     | 
    
         
            -
            # Trailblazer::Operation 
     | 
| 
       1223 
     | 
    
         
            -
            # 
     | 
| 
       1224 
     | 
    
         
            -
            # 
     | 
| 
       1225 
     | 
    
         
            -
            # 
     | 
| 
       1226 
     | 
    
         
            -
            # 
     | 
| 
       1227 
     | 
    
         
            -
            # 
     | 
| 
      
 1224 
     | 
    
         
            +
            #           Interactor     59.746k (±29.9%) i/s -    274.128k in   5.049901s
         
     | 
| 
      
 1225 
     | 
    
         
            +
            # Trailblazer::Operation
         
     | 
| 
      
 1226 
     | 
    
         
            +
            #                          28.424k (±15.8%) i/s -    141.546k in   5.087882s
         
     | 
| 
      
 1227 
     | 
    
         
            +
            #          Dry::Monads    315.635k (± 6.1%) i/s -      1.588M in   5.048914s
         
     | 
| 
      
 1228 
     | 
    
         
            +
            #     Dry::Transaction     10.131k (± 6.4%) i/s -     50.694k in   5.025150s
         
     | 
| 
      
 1229 
     | 
    
         
            +
            #          Micro::Case     75.838k (± 9.7%) i/s -    379.728k in   5.052573s
         
     | 
| 
      
 1230 
     | 
    
         
            +
            #    Micro::Case::Safe     75.461k (±10.1%) i/s -    379.728k in   5.079238s
         
     | 
| 
      
 1231 
     | 
    
         
            +
            #  Micro::Case::Strict     64.235k (± 9.0%) i/s -    324.896k in   5.097028s
         
     | 
| 
       1228 
1232 
     | 
    
         | 
| 
       1229 
1233 
     | 
    
         
             
            # Comparison:
         
     | 
| 
       1230 
     | 
    
         
            -
            #          Dry::Monads:    
     | 
| 
       1231 
     | 
    
         
            -
            #          Micro::Case: 
     | 
| 
       1232 
     | 
    
         
            -
            #    Micro::Case::Safe: 
     | 
| 
       1233 
     | 
    
         
            -
            #  Micro::Case::Strict: 
     | 
| 
       1234 
     | 
    
         
            -
            #           Interactor:     
     | 
| 
       1235 
     | 
    
         
            -
            # Trailblazer::Operation: 
     | 
| 
       1236 
     | 
    
         
            -
            #     Dry::Transaction:     
     | 
| 
      
 1234 
     | 
    
         
            +
            #          Dry::Monads:   315635.1 i/s
         
     | 
| 
      
 1235 
     | 
    
         
            +
            #          Micro::Case:    75837.7 i/s - 4.16x  (± 0.00) slower
         
     | 
| 
      
 1236 
     | 
    
         
            +
            #    Micro::Case::Safe:    75461.3 i/s - 4.18x  (± 0.00) slower
         
     | 
| 
      
 1237 
     | 
    
         
            +
            #  Micro::Case::Strict:    64234.9 i/s - 4.91x  (± 0.00) slower
         
     | 
| 
      
 1238 
     | 
    
         
            +
            #           Interactor:    59745.5 i/s - 5.28x  (± 0.00) slower
         
     | 
| 
      
 1239 
     | 
    
         
            +
            # Trailblazer::Operation:    28423.9 i/s - 11.10x  (± 0.00) slower
         
     | 
| 
      
 1240 
     | 
    
         
            +
            #     Dry::Transaction:    10130.9 i/s - 31.16x  (± 0.00) slower
         
     | 
| 
       1237 
1241 
     | 
    
         
             
            ```
         
     | 
| 
       1238 
1242 
     | 
    
         
             
            </details>
         
     | 
| 
       1239 
1243 
     | 
    
         | 
| 
         @@ -1243,42 +1247,42 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/suc 
     | 
|
| 
       1243 
1247 
     | 
    
         | 
| 
       1244 
1248 
     | 
    
         
             
            | Gem / Abstraction      | Iterations per second |       Comparison  |
         
     | 
| 
       1245 
1249 
     | 
    
         
             
            | -----------------      | --------------------: | ----------------: |
         
     | 
| 
       1246 
     | 
    
         
            -
            |  
     | 
| 
       1247 
     | 
    
         
            -
            |  
     | 
| 
       1248 
     | 
    
         
            -
            | Trailblazer::Operation |                
     | 
| 
       1249 
     | 
    
         
            -
            | Interactor             |                
     | 
| 
       1250 
     | 
    
         
            -
            | Dry::Transaction       |                 
     | 
| 
      
 1250 
     | 
    
         
            +
            | Dry::Monads            |              135386.9 | _**The Fastest**_ |
         
     | 
| 
      
 1251 
     | 
    
         
            +
            | **Micro::Case**        |               73489.3 |     1.85x slower  |
         
     | 
| 
      
 1252 
     | 
    
         
            +
            | Trailblazer::Operation |               29016.4 |     4.67x slower  |
         
     | 
| 
      
 1253 
     | 
    
         
            +
            | Interactor             |               27037.0 |     5.01x slower  |
         
     | 
| 
      
 1254 
     | 
    
         
            +
            | Dry::Transaction       |                8988.6 |    15.06x slower  |
         
     | 
| 
       1251 
1255 
     | 
    
         | 
| 
       1252 
1256 
     | 
    
         
             
            <details>
         
     | 
| 
       1253 
1257 
     | 
    
         
             
              <summary>Show the full <a href="https://github.com/evanphx/benchmark-ips">benchmark/ips</a> results.</summary>
         
     | 
| 
       1254 
1258 
     | 
    
         | 
| 
       1255 
1259 
     | 
    
         
             
            ```ruby
         
     | 
| 
       1256 
1260 
     | 
    
         
             
            # Warming up --------------------------------------
         
     | 
| 
       1257 
     | 
    
         
            -
            #           Interactor     2. 
     | 
| 
       1258 
     | 
    
         
            -
            # Trailblazer::Operation    
     | 
| 
       1259 
     | 
    
         
            -
            #          Dry::Monads    13. 
     | 
| 
       1260 
     | 
    
         
            -
            #     Dry::Transaction    
     | 
| 
       1261 
     | 
    
         
            -
            #          Micro::Case 
     | 
| 
       1262 
     | 
    
         
            -
            #    Micro::Case::Safe 
     | 
| 
       1263 
     | 
    
         
            -
            #  Micro::Case::Strict 
     | 
| 
      
 1261 
     | 
    
         
            +
            #           Interactor     2.626k i/100ms
         
     | 
| 
      
 1262 
     | 
    
         
            +
            # Trailblazer::Operation   2.343k i/100ms
         
     | 
| 
      
 1263 
     | 
    
         
            +
            #          Dry::Monads    13.386k i/100ms
         
     | 
| 
      
 1264 
     | 
    
         
            +
            #     Dry::Transaction   868.000  i/100ms
         
     | 
| 
      
 1265 
     | 
    
         
            +
            #          Micro::Case     7.603k i/100ms
         
     | 
| 
      
 1266 
     | 
    
         
            +
            #    Micro::Case::Safe     7.598k i/100ms
         
     | 
| 
      
 1267 
     | 
    
         
            +
            #  Micro::Case::Strict     6.178k i/100ms
         
     | 
| 
       1264 
1268 
     | 
    
         | 
| 
       1265 
1269 
     | 
    
         
             
            # Calculating -------------------------------------
         
     | 
| 
       1266 
     | 
    
         
            -
            #           Interactor      
     | 
| 
       1267 
     | 
    
         
            -
            # Trailblazer::Operation    
     | 
| 
       1268 
     | 
    
         
            -
            #          Dry::Monads     
     | 
| 
       1269 
     | 
    
         
            -
            #     Dry::Transaction       
     | 
| 
       1270 
     | 
    
         
            -
            #          Micro::Case 
     | 
| 
       1271 
     | 
    
         
            -
            #    Micro::Case::Safe 
     | 
| 
       1272 
     | 
    
         
            -
            #  Micro::Case::Strict 
     | 
| 
      
 1270 
     | 
    
         
            +
            #           Interactor     27.037k (±24.9%) i/s -    128.674k in   5.102133s
         
     | 
| 
      
 1271 
     | 
    
         
            +
            # Trailblazer::Operation   29.016k (±12.4%) i/s -    145.266k in   5.074991s
         
     | 
| 
      
 1272 
     | 
    
         
            +
            #          Dry::Monads    135.387k (±15.1%) i/s -    669.300k in   5.055356s
         
     | 
| 
      
 1273 
     | 
    
         
            +
            #     Dry::Transaction      8.989k (± 9.2%) i/s -     45.136k in   5.084820s
         
     | 
| 
      
 1274 
     | 
    
         
            +
            #          Micro::Case     73.247k (± 9.9%) i/s -    364.944k in   5.030449s
         
     | 
| 
      
 1275 
     | 
    
         
            +
            #    Micro::Case::Safe     73.489k (± 9.6%) i/s -    364.704k in   5.007282s
         
     | 
| 
      
 1276 
     | 
    
         
            +
            #  Micro::Case::Strict     61.980k (± 8.0%) i/s -    308.900k in   5.014821s
         
     | 
| 
       1273 
1277 
     | 
    
         | 
| 
       1274 
1278 
     | 
    
         
             
            # Comparison:
         
     | 
| 
       1275 
     | 
    
         
            -
            # 
     | 
| 
       1276 
     | 
    
         
            -
            # 
     | 
| 
       1277 
     | 
    
         
            -
            #          Micro::Case: 
     | 
| 
       1278 
     | 
    
         
            -
            #  Micro::Case::Strict: 
     | 
| 
       1279 
     | 
    
         
            -
            # Trailblazer::Operation: 
     | 
| 
       1280 
     | 
    
         
            -
            #           Interactor:     
     | 
| 
       1281 
     | 
    
         
            -
            #     Dry::Transaction:      
     | 
| 
      
 1279 
     | 
    
         
            +
            #          Dry::Monads:   135386.9 i/s
         
     | 
| 
      
 1280 
     | 
    
         
            +
            #    Micro::Case::Safe:    73489.3 i/s - 1.84x  (± 0.00) slower
         
     | 
| 
      
 1281 
     | 
    
         
            +
            #          Micro::Case:    73246.6 i/s - 1.85x  (± 0.00) slower
         
     | 
| 
      
 1282 
     | 
    
         
            +
            #  Micro::Case::Strict:    61979.7 i/s - 2.18x  (± 0.00) slower
         
     | 
| 
      
 1283 
     | 
    
         
            +
            # Trailblazer::Operation:    29016.4 i/s - 4.67x  (± 0.00) slower
         
     | 
| 
      
 1284 
     | 
    
         
            +
            #           Interactor:    27037.0 i/s - 5.01x  (± 0.00) slower
         
     | 
| 
      
 1285 
     | 
    
         
            +
            #     Dry::Transaction:     8988.6 i/s - 15.06x  (± 0.00) slower
         
     | 
| 
       1282 
1286 
     | 
    
         
             
            ```
         
     | 
| 
       1283 
1287 
     | 
    
         
             
            </details>
         
     | 
| 
       1284 
1288 
     | 
    
         | 
| 
         @@ -1290,12 +1294,12 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai 
     | 
|
| 
       1290 
1294 
     | 
    
         | 
| 
       1291 
1295 
     | 
    
         
             
            | Gems / Abstraction      | [Success results](https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/flow/success_results.rb) | [Failure results](https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/flow/failure_results.rb) |
         
     | 
| 
       1292 
1296 
     | 
    
         
             
            | ------------------------------------------- | ----------------: | ----------------: |
         
     | 
| 
       1293 
     | 
    
         
            -
            | Micro::Case::Result `pipe` method           | 
     | 
| 
       1294 
     | 
    
         
            -
            | Micro::Case::Result `then` method           | 
     | 
| 
       1295 
     | 
    
         
            -
            | Micro::Cases.flow                           | 
     | 
| 
       1296 
     | 
    
         
            -
            | Micro::Case class with an inner flow        |       
     | 
| 
       1297 
     | 
    
         
            -
            | Micro::Case class including itself as a step|       
     | 
| 
       1298 
     | 
    
         
            -
            | Interactor::Organizer                       |       
     | 
| 
      
 1297 
     | 
    
         
            +
            | Micro::Case::Result `pipe` method           |       80936.2 i/s |       78280.4 i/s |
         
     | 
| 
      
 1298 
     | 
    
         
            +
            | Micro::Case::Result `then` method           |         0x slower |         0x slower |
         
     | 
| 
      
 1299 
     | 
    
         
            +
            | Micro::Cases.flow                           |         0x slower |         0x slower |
         
     | 
| 
      
 1300 
     | 
    
         
            +
            | Micro::Case class with an inner flow        |      1.72x slower |      1.68x slower |
         
     | 
| 
      
 1301 
     | 
    
         
            +
            | Micro::Case class including itself as a step|      1.93x slower |      1.87x slower |
         
     | 
| 
      
 1302 
     | 
    
         
            +
            | Interactor::Organizer                       |      3.33x slower |      3.22x slower |
         
     | 
| 
       1299 
1303 
     | 
    
         | 
| 
       1300 
1304 
     | 
    
         
             
            \* The `Dry::Monads`, `Dry::Transaction`, `Trailblazer::Operation` gems are out of this analysis because all of them doesn't have this kind of feature.
         
     | 
| 
       1301 
1305 
     | 
    
         | 
| 
         @@ -1304,28 +1308,28 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai 
     | 
|
| 
       1304 
1308 
     | 
    
         | 
| 
       1305 
1309 
     | 
    
         
             
            ```ruby
         
     | 
| 
       1306 
1310 
     | 
    
         
             
            # Warming up --------------------------------------
         
     | 
| 
       1307 
     | 
    
         
            -
            # Interactor::Organizer 
     | 
| 
       1308 
     | 
    
         
            -
            # Micro::Cases.flow([]) 
     | 
| 
       1309 
     | 
    
         
            -
            # Micro::Case flow in a class 
     | 
| 
       1310 
     | 
    
         
            -
            # Micro::Case including the class 
     | 
| 
       1311 
     | 
    
         
            -
            # Micro::Case::Result#| 
     | 
| 
       1312 
     | 
    
         
            -
            # Micro::Case::Result#then 
     | 
| 
      
 1311 
     | 
    
         
            +
            # Interactor::Organizer             1.809k i/100ms
         
     | 
| 
      
 1312 
     | 
    
         
            +
            # Micro::Cases.flow([])             7.808k i/100ms
         
     | 
| 
      
 1313 
     | 
    
         
            +
            # Micro::Case flow in a class       4.816k i/100ms
         
     | 
| 
      
 1314 
     | 
    
         
            +
            # Micro::Case including the class   4.094k i/100ms
         
     | 
| 
      
 1315 
     | 
    
         
            +
            # Micro::Case::Result#|             7.656k i/100ms
         
     | 
| 
      
 1316 
     | 
    
         
            +
            # Micro::Case::Result#then          7.138k i/100ms
         
     | 
| 
       1313 
1317 
     | 
    
         | 
| 
       1314 
1318 
     | 
    
         
             
            # Calculating -------------------------------------
         
     | 
| 
       1315 
     | 
    
         
            -
            # Interactor::Organizer 
     | 
| 
       1316 
     | 
    
         
            -
            # Micro::Cases.flow([]) 
     | 
| 
       1317 
     | 
    
         
            -
            # Micro::Case flow in a class 
     | 
| 
       1318 
     | 
    
         
            -
            # Micro::Case including the class 
     | 
| 
       1319 
     | 
    
         
            -
            # Micro::Case::Result#| 
     | 
| 
       1320 
     | 
    
         
            -
            # Micro::Case::Result#then 
     | 
| 
      
 1319 
     | 
    
         
            +
            # Interactor::Organizer             24.290k (±24.0%) i/s -    113.967k in   5.032825s
         
     | 
| 
      
 1320 
     | 
    
         
            +
            # Micro::Cases.flow([])             74.790k (±11.1%) i/s -    374.784k in   5.071740s
         
     | 
| 
      
 1321 
     | 
    
         
            +
            # Micro::Case flow in a class       47.043k (± 8.0%) i/s -    235.984k in   5.047477s
         
     | 
| 
      
 1322 
     | 
    
         
            +
            # Micro::Case including the class   42.030k (± 8.5%) i/s -    208.794k in   5.002138s
         
     | 
| 
      
 1323 
     | 
    
         
            +
            # Micro::Case::Result#|             80.936k (±15.9%) i/s -    398.112k in   5.052531s
         
     | 
| 
      
 1324 
     | 
    
         
            +
            # Micro::Case::Result#then          71.459k (± 8.8%) i/s -    356.900k in   5.030526s
         
     | 
| 
       1321 
1325 
     | 
    
         | 
| 
       1322 
1326 
     | 
    
         
             
            # Comparison:
         
     | 
| 
       1323 
     | 
    
         
            -
            # Micro::Case::Result#|: 
     | 
| 
       1324 
     | 
    
         
            -
            # Micro:: 
     | 
| 
       1325 
     | 
    
         
            -
            # Micro:: 
     | 
| 
       1326 
     | 
    
         
            -
            # Micro::Case flow in a class: 
     | 
| 
       1327 
     | 
    
         
            -
            # Micro::Case including the class: 
     | 
| 
       1328 
     | 
    
         
            -
            # Interactor::Organizer: 
     | 
| 
      
 1327 
     | 
    
         
            +
            # Micro::Case::Result#|:            80936.2 i/s
         
     | 
| 
      
 1328 
     | 
    
         
            +
            # Micro::Cases.flow([]):            74790.1 i/s - same-ish: difference falls within error
         
     | 
| 
      
 1329 
     | 
    
         
            +
            # Micro::Case::Result#then:         71459.5 i/s - same-ish: difference falls within error
         
     | 
| 
      
 1330 
     | 
    
         
            +
            # Micro::Case flow in a class:      47042.6 i/s - 1.72x  (± 0.00) slower
         
     | 
| 
      
 1331 
     | 
    
         
            +
            # Micro::Case including the class:  42030.2 i/s - 1.93x  (± 0.00) slower
         
     | 
| 
      
 1332 
     | 
    
         
            +
            # Interactor::Organizer:            24290.3 i/s - 3.33x  (± 0.00) slower
         
     | 
| 
       1329 
1333 
     | 
    
         
             
            ```
         
     | 
| 
       1330 
1334 
     | 
    
         
             
            </details>
         
     | 
| 
       1331 
1335 
     | 
    
         | 
| 
         @@ -1334,28 +1338,28 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai 
     | 
|
| 
       1334 
1338 
     | 
    
         | 
| 
       1335 
1339 
     | 
    
         
             
            ```ruby
         
     | 
| 
       1336 
1340 
     | 
    
         
             
            # Warming up --------------------------------------
         
     | 
| 
       1337 
     | 
    
         
            -
            # Interactor::Organizer             
     | 
| 
       1338 
     | 
    
         
            -
            # Micro::Cases.flow([]) 
     | 
| 
       1339 
     | 
    
         
            -
            # Micro::Case flow in a class       
     | 
| 
       1340 
     | 
    
         
            -
            # Micro::Case including the class   
     | 
| 
       1341 
     | 
    
         
            -
            # Micro::Case::Result#| 
     | 
| 
       1342 
     | 
    
         
            -
            # Micro::Case::Result#then 
     | 
| 
      
 1341 
     | 
    
         
            +
            # Interactor::Organizer            1.734k i/100ms
         
     | 
| 
      
 1342 
     | 
    
         
            +
            # Micro::Cases.flow([])            7.515k i/100ms
         
     | 
| 
      
 1343 
     | 
    
         
            +
            # Micro::Case flow in a class      4.636k i/100ms
         
     | 
| 
      
 1344 
     | 
    
         
            +
            # Micro::Case including the class  4.114k i/100ms
         
     | 
| 
      
 1345 
     | 
    
         
            +
            # Micro::Case::Result#|            7.588k i/100ms
         
     | 
| 
      
 1346 
     | 
    
         
            +
            # Micro::Case::Result#then         6.681k i/100ms
         
     | 
| 
       1343 
1347 
     | 
    
         | 
| 
       1344 
1348 
     | 
    
         
             
            # Calculating -------------------------------------
         
     | 
| 
       1345 
     | 
    
         
            -
            # Interactor::Organizer             
     | 
| 
       1346 
     | 
    
         
            -
            # Micro::Cases.flow([]) 
     | 
| 
       1347 
     | 
    
         
            -
            # Micro::Case flow in a class       
     | 
| 
       1348 
     | 
    
         
            -
            # Micro::Case including the class   
     | 
| 
       1349 
     | 
    
         
            -
            # Micro::Case::Result#| 
     | 
| 
       1350 
     | 
    
         
            -
            # Micro::Case::Result#then 
     | 
| 
      
 1349 
     | 
    
         
            +
            # Interactor::Organizer            24.280k (±24.5%) i/s -    112.710k in   5.013334s
         
     | 
| 
      
 1350 
     | 
    
         
            +
            # Micro::Cases.flow([])            74.999k (± 9.8%) i/s -    375.750k in   5.055777s
         
     | 
| 
      
 1351 
     | 
    
         
            +
            # Micro::Case flow in a class      46.681k (± 9.3%) i/s -    236.436k in   5.105105s
         
     | 
| 
      
 1352 
     | 
    
         
            +
            # Micro::Case including the class  41.921k (± 8.9%) i/s -    209.814k in   5.043622s
         
     | 
| 
      
 1353 
     | 
    
         
            +
            # Micro::Case::Result#|            78.280k (±12.6%) i/s -    386.988k in   5.022146s
         
     | 
| 
      
 1354 
     | 
    
         
            +
            # Micro::Case::Result#then         68.898k (± 8.8%) i/s -    347.412k in   5.080116s
         
     | 
| 
       1351 
1355 
     | 
    
         | 
| 
       1352 
1356 
     | 
    
         
             
            # Comparison:
         
     | 
| 
       1353 
     | 
    
         
            -
            # Micro::Case::Result#|: 
     | 
| 
       1354 
     | 
    
         
            -
            # Micro:: 
     | 
| 
       1355 
     | 
    
         
            -
            # Micro:: 
     | 
| 
       1356 
     | 
    
         
            -
            # Micro::Case flow in a class: 
     | 
| 
       1357 
     | 
    
         
            -
            # Micro::Case including the class: 
     | 
| 
       1358 
     | 
    
         
            -
            # Interactor::Organizer: 
     | 
| 
      
 1357 
     | 
    
         
            +
            # Micro::Case::Result#|:            78280.4 i/s
         
     | 
| 
      
 1358 
     | 
    
         
            +
            # Micro::Cases.flow([]):            74999.4 i/s - same-ish: difference falls within error
         
     | 
| 
      
 1359 
     | 
    
         
            +
            # Micro::Case::Result#then:         68898.4 i/s - same-ish: difference falls within error
         
     | 
| 
      
 1360 
     | 
    
         
            +
            # Micro::Case flow in a class:      46681.0 i/s - 1.68x  (± 0.00) slower
         
     | 
| 
      
 1361 
     | 
    
         
            +
            # Micro::Case including the class:  41920.8 i/s - 1.87x  (± 0.00) slower
         
     | 
| 
      
 1362 
     | 
    
         
            +
            # Interactor::Organizer:            24280.0 i/s - 3.22x  (± 0.00) slower
         
     | 
| 
       1359 
1363 
     | 
    
         
             
            ```
         
     | 
| 
       1360 
1364 
     | 
    
         
             
            </details>
         
     | 
| 
       1361 
1365 
     | 
    
         | 
    
        data/README.pt-BR.md
    CHANGED
    
    | 
         @@ -38,7 +38,8 @@ Principais objetivos deste projeto: 
     | 
|
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
            Versão    | Documentação
         
     | 
| 
       40 
40 
     | 
    
         
             
            --------- | -------------
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 41 
     | 
    
         
            +
            unreleased| https://github.com/serradura/u-case/blob/main/README.md
         
     | 
| 
      
 42 
     | 
    
         
            +
            4.2.2     | https://github.com/serradura/u-case/blob/v4.x/README.md
         
     | 
| 
       42 
43 
     | 
    
         
             
            3.1.0     | https://github.com/serradura/u-case/blob/v3.x/README.md
         
     | 
| 
       43 
44 
     | 
    
         
             
            2.6.0     | https://github.com/serradura/u-case/blob/v2.x/README.md
         
     | 
| 
       44 
45 
     | 
    
         
             
            1.1.0     | https://github.com/serradura/u-case/blob/v1.x/README.md
         
     | 
| 
         @@ -69,9 +70,8 @@ Versão    | Documentação 
     | 
|
| 
       69 
70 
     | 
    
         
             
                - [É possível declarar um fluxo que inclui o próprio caso de uso?](#é-possível-declarar-um-fluxo-que-inclui-o-próprio-caso-de-uso)
         
     | 
| 
       70 
71 
     | 
    
         
             
              - [`Micro::Case::Strict` - O que é um caso de uso estrito?](#microcasestrict---o-que-é-um-caso-de-uso-estrito)
         
     | 
| 
       71 
72 
     | 
    
         
             
              - [`Micro::Case::Safe` - Existe algum recurso para lidar automaticamente com exceções dentro de um caso de uso ou fluxo?](#microcasesafe---existe-algum-recurso-para-lidar-automaticamente-com-exceções-dentro-de-um-caso-de-uso-ou-fluxo)
         
     | 
| 
       72 
     | 
    
         
            -
                - [`Micro::Case::Result#on_exception`](#microcaseresulton_exception)
         
     | 
| 
       73 
73 
     | 
    
         
             
                - [`Micro::Cases::Safe::Flow`](#microcasessafeflow)
         
     | 
| 
       74 
     | 
    
         
            -
                - [`Micro::Case::Result#on_exception`](#microcaseresulton_exception 
     | 
| 
      
 74 
     | 
    
         
            +
                - [`Micro::Case::Result#on_exception`](#microcaseresulton_exception)
         
     | 
| 
       75 
75 
     | 
    
         
             
              - [`u-case/with_activemodel_validation` - Como validar os atributos do caso de uso?](#u-casewith_activemodel_validation---como-validar-os-atributos-do-caso-de-uso)
         
     | 
| 
       76 
76 
     | 
    
         
             
                - [Se eu habilitei a validação automática, é possível desabilitá-la apenas em casos de uso específicos?](#se-eu-habilitei-a-validação-automática-é-possível-desabilitá-la-apenas-em-casos-de-uso-específicos)
         
     | 
| 
       77 
77 
     | 
    
         
             
                - [`Kind::Validator`](#kindvalidator)
         
     | 
| 
         @@ -99,7 +99,8 @@ Versão    | Documentação 
     | 
|
| 
       99 
99 
     | 
    
         | 
| 
       100 
100 
     | 
    
         
             
            | u-case         | branch  | ruby     |  activemodel  | u-attributes |
         
     | 
| 
       101 
101 
     | 
    
         
             
            | -------------- | ------- | -------- | ------------- | ------------ |
         
     | 
| 
       102 
     | 
    
         
            -
            |  
     | 
| 
      
 102 
     | 
    
         
            +
            | unreleased     | main    | >= 2.2.0 | >= 3.2, < 6.1 |       ~> 2.0 |
         
     | 
| 
      
 103 
     | 
    
         
            +
            | 4.2.2          | v4.x    | >= 2.2.0 | >= 3.2, < 6.1 |       ~> 2.0 |
         
     | 
| 
       103 
104 
     | 
    
         
             
            | 3.1.0          | v3.x    | >= 2.2.0 | >= 3.2, < 6.1 |       ~> 1.1 |
         
     | 
| 
       104 
105 
     | 
    
         
             
            | 2.6.0          | v2.x    | >= 2.2.0 | >= 3.2, < 6.1 |       ~> 1.1 |
         
     | 
| 
       105 
106 
     | 
    
         
             
            | 1.1.0          | v1.x    | >= 2.2.0 | >= 3.2, < 6.1 |       ~> 1.1 |
         
     | 
| 
         @@ -123,7 +124,7 @@ Versão    | Documentação 
     | 
|
| 
       123 
124 
     | 
    
         
             
            Adicione essa linha ao Gemfile da sua aplicação:
         
     | 
| 
       124 
125 
     | 
    
         | 
| 
       125 
126 
     | 
    
         
             
            ```ruby
         
     | 
| 
       126 
     | 
    
         
            -
            gem 'u-case', '~>  
     | 
| 
      
 127 
     | 
    
         
            +
            gem 'u-case', '~> 4.1.0'
         
     | 
| 
       127 
128 
     | 
    
         
             
            ```
         
     | 
| 
       128 
129 
     | 
    
         | 
| 
       129 
130 
     | 
    
         
             
            E então execute:
         
     | 
| 
         @@ -975,8 +976,6 @@ result.on_failure(:exception) do |result| 
     | 
|
| 
       975 
976 
     | 
    
         
             
            end
         
     | 
| 
       976 
977 
     | 
    
         
             
            ```
         
     | 
| 
       977 
978 
     | 
    
         | 
| 
       978 
     | 
    
         
            -
            #### `Micro::Case::Result#on_exception`
         
     | 
| 
       979 
     | 
    
         
            -
             
     | 
| 
       980 
979 
     | 
    
         
             
            Se você precisar lidar com um erro específico, recomendo o uso de uma instrução case. Exemplo:
         
     | 
| 
       981 
980 
     | 
    
         | 
| 
       982 
981 
     | 
    
         
             
            ```ruby
         
     | 
| 
         @@ -1200,44 +1199,46 @@ end 
     | 
|
| 
       1200 
1199 
     | 
    
         | 
| 
       1201 
1200 
     | 
    
         
             
            #### Success results
         
     | 
| 
       1202 
1201 
     | 
    
         | 
| 
       1203 
     | 
    
         
            -
            | Gem / Abstração        | Iterações por segundo | 
     | 
| 
       1204 
     | 
    
         
            -
            | -----------------      | --------------------: |  
     | 
| 
       1205 
     | 
    
         
            -
            | Dry::Monads            |               
     | 
| 
       1206 
     | 
    
         
            -
            | **Micro::Case**        | 
     | 
| 
       1207 
     | 
    
         
            -
            | Interactor             |                
     | 
| 
       1208 
     | 
    
         
            -
            | Trailblazer::Operation |                
     | 
| 
       1209 
     | 
    
         
            -
            | Dry::Transaction       |                
     | 
| 
      
 1202 
     | 
    
         
            +
            | Gem / Abstração        | Iterações por segundo |           Comparação |
         
     | 
| 
      
 1203 
     | 
    
         
            +
            | -----------------      | --------------------: | -------------------: |
         
     | 
| 
      
 1204 
     | 
    
         
            +
            | Dry::Monads            |              315635.1 |  _**O mais rápido**_ |
         
     | 
| 
      
 1205 
     | 
    
         
            +
            | **Micro::Case**        |               75837.7 |     4.16x mais lento |
         
     | 
| 
      
 1206 
     | 
    
         
            +
            | Interactor             |               59745.5 |     5.28x mais lento |
         
     | 
| 
      
 1207 
     | 
    
         
            +
            | Trailblazer::Operation |               28423.9 |    11.10x mais lento |
         
     | 
| 
      
 1208 
     | 
    
         
            +
            | Dry::Transaction       |               10130.9 |    31.16x mais lento |
         
     | 
| 
       1210 
1209 
     | 
    
         | 
| 
       1211 
1210 
     | 
    
         
             
            <details>
         
     | 
| 
       1212 
1211 
     | 
    
         
             
              <summary>Show the full <a href="https://github.com/evanphx/benchmark-ips">benchmark/ips</a> results.</summary>
         
     | 
| 
       1213 
1212 
     | 
    
         | 
| 
       1214 
1213 
     | 
    
         
             
            ```ruby
         
     | 
| 
       1215 
1214 
     | 
    
         
             
            # Warming up --------------------------------------
         
     | 
| 
       1216 
     | 
    
         
            -
            #           Interactor     5. 
     | 
| 
       1217 
     | 
    
         
            -
            # Trailblazer::Operation 
     | 
| 
       1218 
     | 
    
         
            -
            # 
     | 
| 
       1219 
     | 
    
         
            -
            # 
     | 
| 
       1220 
     | 
    
         
            -
            # 
     | 
| 
       1221 
     | 
    
         
            -
            # 
     | 
| 
       1222 
     | 
    
         
            -
            # 
     | 
| 
      
 1215 
     | 
    
         
            +
            #           Interactor     5.711k i/100ms
         
     | 
| 
      
 1216 
     | 
    
         
            +
            # Trailblazer::Operation
         
     | 
| 
      
 1217 
     | 
    
         
            +
            #                          2.283k i/100ms
         
     | 
| 
      
 1218 
     | 
    
         
            +
            #          Dry::Monads    31.130k i/100ms
         
     | 
| 
      
 1219 
     | 
    
         
            +
            #     Dry::Transaction   994.000  i/100ms
         
     | 
| 
      
 1220 
     | 
    
         
            +
            #          Micro::Case     7.911k i/100ms
         
     | 
| 
      
 1221 
     | 
    
         
            +
            #    Micro::Case::Safe     7.911k i/100ms
         
     | 
| 
      
 1222 
     | 
    
         
            +
            #  Micro::Case::Strict     6.248k i/100ms
         
     | 
| 
       1223 
1223 
     | 
    
         | 
| 
       1224 
1224 
     | 
    
         
             
            # Calculating -------------------------------------
         
     | 
| 
       1225 
     | 
    
         
            -
            #           Interactor      
     | 
| 
       1226 
     | 
    
         
            -
            # Trailblazer::Operation 
     | 
| 
       1227 
     | 
    
         
            -
            # 
     | 
| 
       1228 
     | 
    
         
            -
            # 
     | 
| 
       1229 
     | 
    
         
            -
            # 
     | 
| 
       1230 
     | 
    
         
            -
            # 
     | 
| 
       1231 
     | 
    
         
            -
            # 
     | 
| 
      
 1225 
     | 
    
         
            +
            #           Interactor     59.746k (±29.9%) i/s -    274.128k in   5.049901s
         
     | 
| 
      
 1226 
     | 
    
         
            +
            # Trailblazer::Operation
         
     | 
| 
      
 1227 
     | 
    
         
            +
            #                          28.424k (±15.8%) i/s -    141.546k in   5.087882s
         
     | 
| 
      
 1228 
     | 
    
         
            +
            #          Dry::Monads    315.635k (± 6.1%) i/s -      1.588M in   5.048914s
         
     | 
| 
      
 1229 
     | 
    
         
            +
            #     Dry::Transaction     10.131k (± 6.4%) i/s -     50.694k in   5.025150s
         
     | 
| 
      
 1230 
     | 
    
         
            +
            #          Micro::Case     75.838k (± 9.7%) i/s -    379.728k in   5.052573s
         
     | 
| 
      
 1231 
     | 
    
         
            +
            #    Micro::Case::Safe     75.461k (±10.1%) i/s -    379.728k in   5.079238s
         
     | 
| 
      
 1232 
     | 
    
         
            +
            #  Micro::Case::Strict     64.235k (± 9.0%) i/s -    324.896k in   5.097028s
         
     | 
| 
       1232 
1233 
     | 
    
         | 
| 
       1233 
1234 
     | 
    
         
             
            # Comparison:
         
     | 
| 
       1234 
     | 
    
         
            -
            #          Dry::Monads:    
     | 
| 
       1235 
     | 
    
         
            -
            #          Micro::Case: 
     | 
| 
       1236 
     | 
    
         
            -
            #    Micro::Case::Safe: 
     | 
| 
       1237 
     | 
    
         
            -
            #  Micro::Case::Strict: 
     | 
| 
       1238 
     | 
    
         
            -
            #           Interactor:     
     | 
| 
       1239 
     | 
    
         
            -
            # Trailblazer::Operation: 
     | 
| 
       1240 
     | 
    
         
            -
            #     Dry::Transaction:     
     | 
| 
      
 1235 
     | 
    
         
            +
            #          Dry::Monads:   315635.1 i/s
         
     | 
| 
      
 1236 
     | 
    
         
            +
            #          Micro::Case:    75837.7 i/s - 4.16x  (± 0.00) slower
         
     | 
| 
      
 1237 
     | 
    
         
            +
            #    Micro::Case::Safe:    75461.3 i/s - 4.18x  (± 0.00) slower
         
     | 
| 
      
 1238 
     | 
    
         
            +
            #  Micro::Case::Strict:    64234.9 i/s - 4.91x  (± 0.00) slower
         
     | 
| 
      
 1239 
     | 
    
         
            +
            #           Interactor:    59745.5 i/s - 5.28x  (± 0.00) slower
         
     | 
| 
      
 1240 
     | 
    
         
            +
            # Trailblazer::Operation:    28423.9 i/s - 11.10x  (± 0.00) slower
         
     | 
| 
      
 1241 
     | 
    
         
            +
            #     Dry::Transaction:    10130.9 i/s - 31.16x  (± 0.00) slower
         
     | 
| 
       1241 
1242 
     | 
    
         
             
            ```
         
     | 
| 
       1242 
1243 
     | 
    
         
             
            </details>
         
     | 
| 
       1243 
1244 
     | 
    
         | 
| 
         @@ -1245,44 +1246,44 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/suc 
     | 
|
| 
       1245 
1246 
     | 
    
         | 
| 
       1246 
1247 
     | 
    
         
             
            #### Failure results
         
     | 
| 
       1247 
1248 
     | 
    
         | 
| 
       1248 
     | 
    
         
            -
            | Gem / Abstração        | Iterações por segundo | 
     | 
| 
       1249 
     | 
    
         
            -
            | -----------------      | --------------------: |  
     | 
| 
       1250 
     | 
    
         
            -
            |  
     | 
| 
       1251 
     | 
    
         
            -
            |  
     | 
| 
       1252 
     | 
    
         
            -
            | Trailblazer::Operation |                
     | 
| 
       1253 
     | 
    
         
            -
            | Interactor             |                
     | 
| 
       1254 
     | 
    
         
            -
            | Dry::Transaction       |                 
     | 
| 
      
 1249 
     | 
    
         
            +
            | Gem / Abstração        | Iterações por segundo |           Comparação |
         
     | 
| 
      
 1250 
     | 
    
         
            +
            | -----------------      | --------------------: | -------------------: |
         
     | 
| 
      
 1251 
     | 
    
         
            +
            | Dry::Monads            |              135386.9 | _**O mais rápido**_  |
         
     | 
| 
      
 1252 
     | 
    
         
            +
            | **Micro::Case**        |               73489.3 |     1.85x mais lento |
         
     | 
| 
      
 1253 
     | 
    
         
            +
            | Trailblazer::Operation |               29016.4 |     4.67x mais lento |
         
     | 
| 
      
 1254 
     | 
    
         
            +
            | Interactor             |               27037.0 |     5.01x mais lento |
         
     | 
| 
      
 1255 
     | 
    
         
            +
            | Dry::Transaction       |                8988.6 |    15.06x mais lento |
         
     | 
| 
       1255 
1256 
     | 
    
         | 
| 
       1256 
1257 
     | 
    
         
             
            <details>
         
     | 
| 
       1257 
1258 
     | 
    
         
             
              <summary>Mostrar o resultado completo do <a href="https://github.com/evanphx/benchmark-ips">benchmark/ips</a>.</summary>
         
     | 
| 
       1258 
1259 
     | 
    
         | 
| 
       1259 
1260 
     | 
    
         
             
            ```ruby
         
     | 
| 
       1260 
1261 
     | 
    
         
             
            # Warming up --------------------------------------
         
     | 
| 
       1261 
     | 
    
         
            -
            #           Interactor     2. 
     | 
| 
       1262 
     | 
    
         
            -
            # Trailblazer::Operation    
     | 
| 
       1263 
     | 
    
         
            -
            #          Dry::Monads    13. 
     | 
| 
       1264 
     | 
    
         
            -
            #     Dry::Transaction    
     | 
| 
       1265 
     | 
    
         
            -
            #          Micro::Case 
     | 
| 
       1266 
     | 
    
         
            -
            #    Micro::Case::Safe 
     | 
| 
       1267 
     | 
    
         
            -
            #  Micro::Case::Strict 
     | 
| 
      
 1262 
     | 
    
         
            +
            #           Interactor     2.626k i/100ms
         
     | 
| 
      
 1263 
     | 
    
         
            +
            # Trailblazer::Operation   2.343k i/100ms
         
     | 
| 
      
 1264 
     | 
    
         
            +
            #          Dry::Monads    13.386k i/100ms
         
     | 
| 
      
 1265 
     | 
    
         
            +
            #     Dry::Transaction   868.000  i/100ms
         
     | 
| 
      
 1266 
     | 
    
         
            +
            #          Micro::Case     7.603k i/100ms
         
     | 
| 
      
 1267 
     | 
    
         
            +
            #    Micro::Case::Safe     7.598k i/100ms
         
     | 
| 
      
 1268 
     | 
    
         
            +
            #  Micro::Case::Strict     6.178k i/100ms
         
     | 
| 
       1268 
1269 
     | 
    
         | 
| 
       1269 
1270 
     | 
    
         
             
            # Calculating -------------------------------------
         
     | 
| 
       1270 
     | 
    
         
            -
            #           Interactor      
     | 
| 
       1271 
     | 
    
         
            -
            # Trailblazer::Operation    
     | 
| 
       1272 
     | 
    
         
            -
            #          Dry::Monads     
     | 
| 
       1273 
     | 
    
         
            -
            #     Dry::Transaction       
     | 
| 
       1274 
     | 
    
         
            -
            #          Micro::Case 
     | 
| 
       1275 
     | 
    
         
            -
            #    Micro::Case::Safe 
     | 
| 
       1276 
     | 
    
         
            -
            #  Micro::Case::Strict 
     | 
| 
      
 1271 
     | 
    
         
            +
            #           Interactor     27.037k (±24.9%) i/s -    128.674k in   5.102133s
         
     | 
| 
      
 1272 
     | 
    
         
            +
            # Trailblazer::Operation   29.016k (±12.4%) i/s -    145.266k in   5.074991s
         
     | 
| 
      
 1273 
     | 
    
         
            +
            #          Dry::Monads    135.387k (±15.1%) i/s -    669.300k in   5.055356s
         
     | 
| 
      
 1274 
     | 
    
         
            +
            #     Dry::Transaction      8.989k (± 9.2%) i/s -     45.136k in   5.084820s
         
     | 
| 
      
 1275 
     | 
    
         
            +
            #          Micro::Case     73.247k (± 9.9%) i/s -    364.944k in   5.030449s
         
     | 
| 
      
 1276 
     | 
    
         
            +
            #    Micro::Case::Safe     73.489k (± 9.6%) i/s -    364.704k in   5.007282s
         
     | 
| 
      
 1277 
     | 
    
         
            +
            #  Micro::Case::Strict     61.980k (± 8.0%) i/s -    308.900k in   5.014821s
         
     | 
| 
       1277 
1278 
     | 
    
         | 
| 
       1278 
1279 
     | 
    
         
             
            # Comparison:
         
     | 
| 
       1279 
     | 
    
         
            -
            # 
     | 
| 
       1280 
     | 
    
         
            -
            # 
     | 
| 
       1281 
     | 
    
         
            -
            #          Micro::Case: 
     | 
| 
       1282 
     | 
    
         
            -
            #  Micro::Case::Strict: 
     | 
| 
       1283 
     | 
    
         
            -
            # Trailblazer::Operation: 
     | 
| 
       1284 
     | 
    
         
            -
            #           Interactor:     
     | 
| 
       1285 
     | 
    
         
            -
            #     Dry::Transaction:      
     | 
| 
      
 1280 
     | 
    
         
            +
            #          Dry::Monads:   135386.9 i/s
         
     | 
| 
      
 1281 
     | 
    
         
            +
            #    Micro::Case::Safe:    73489.3 i/s - 1.84x  (± 0.00) slower
         
     | 
| 
      
 1282 
     | 
    
         
            +
            #          Micro::Case:    73246.6 i/s - 1.85x  (± 0.00) slower
         
     | 
| 
      
 1283 
     | 
    
         
            +
            #  Micro::Case::Strict:    61979.7 i/s - 2.18x  (± 0.00) slower
         
     | 
| 
      
 1284 
     | 
    
         
            +
            # Trailblazer::Operation:    29016.4 i/s - 4.67x  (± 0.00) slower
         
     | 
| 
      
 1285 
     | 
    
         
            +
            #           Interactor:    27037.0 i/s - 5.01x  (± 0.00) slower
         
     | 
| 
      
 1286 
     | 
    
         
            +
            #     Dry::Transaction:     8988.6 i/s - 15.06x  (± 0.00) slower
         
     | 
| 
       1286 
1287 
     | 
    
         
             
            ```
         
     | 
| 
       1287 
1288 
     | 
    
         
             
            </details>
         
     | 
| 
       1288 
1289 
     | 
    
         | 
| 
         @@ -1294,12 +1295,12 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai 
     | 
|
| 
       1294 
1295 
     | 
    
         | 
| 
       1295 
1296 
     | 
    
         
             
            | Gem / Abstração      | [Resultados de sucesso](https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/flow/success_results.rb) | [Resultados de falha](https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/flow/failure_results.rb) |
         
     | 
| 
       1296 
1297 
     | 
    
         
             
            | ------------------------------------------- | ----------------: | ----------------: |
         
     | 
| 
       1297 
     | 
    
         
            -
            | Micro::Case::Result `pipe` method           | 
     | 
| 
       1298 
     | 
    
         
            -
            | Micro::Case::Result `then` method           |  
     | 
| 
       1299 
     | 
    
         
            -
            | Micro::Cases.flow                           |  
     | 
| 
       1300 
     | 
    
         
            -
            | Micro::Case class with an inner flow        | 
     | 
| 
       1301 
     | 
    
         
            -
            | Micro::Case class including itself as a step| 
     | 
| 
       1302 
     | 
    
         
            -
            | Interactor::Organizer                       | 
     | 
| 
      
 1298 
     | 
    
         
            +
            | Micro::Case::Result `pipe` method           |       80936.2 i/s |       78280.4 i/s |
         
     | 
| 
      
 1299 
     | 
    
         
            +
            | Micro::Case::Result `then` method           |     0x mais lento |     0x mais lento |
         
     | 
| 
      
 1300 
     | 
    
         
            +
            | Micro::Cases.flow                           |     0x mais lento |     0x mais lento |
         
     | 
| 
      
 1301 
     | 
    
         
            +
            | Micro::Case class with an inner flow        |  1.72x mais lento |  1.68x mais lento |
         
     | 
| 
      
 1302 
     | 
    
         
            +
            | Micro::Case class including itself as a step|  1.93x mais lento |  1.87x mais lento |
         
     | 
| 
      
 1303 
     | 
    
         
            +
            | Interactor::Organizer                       |  3.33x mais lento |  3.22x mais lento |
         
     | 
| 
       1303 
1304 
     | 
    
         | 
| 
       1304 
1305 
     | 
    
         
             
            \* As gems `Dry::Monads`, `Dry::Transaction`, `Trailblazer::Operation` estão fora desta análise por não terem esse tipo de funcionalidade.
         
     | 
| 
       1305 
1306 
     | 
    
         | 
| 
         @@ -1308,28 +1309,28 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai 
     | 
|
| 
       1308 
1309 
     | 
    
         | 
| 
       1309 
1310 
     | 
    
         
             
            ```ruby
         
     | 
| 
       1310 
1311 
     | 
    
         
             
            # Warming up --------------------------------------
         
     | 
| 
       1311 
     | 
    
         
            -
            # Interactor::Organizer 
     | 
| 
       1312 
     | 
    
         
            -
            # Micro::Cases.flow([]) 
     | 
| 
       1313 
     | 
    
         
            -
            # Micro::Case flow in a class 
     | 
| 
       1314 
     | 
    
         
            -
            # Micro::Case including the class 
     | 
| 
       1315 
     | 
    
         
            -
            # Micro::Case::Result#| 
     | 
| 
       1316 
     | 
    
         
            -
            # Micro::Case::Result#then 
     | 
| 
      
 1312 
     | 
    
         
            +
            # Interactor::Organizer             1.809k i/100ms
         
     | 
| 
      
 1313 
     | 
    
         
            +
            # Micro::Cases.flow([])             7.808k i/100ms
         
     | 
| 
      
 1314 
     | 
    
         
            +
            # Micro::Case flow in a class       4.816k i/100ms
         
     | 
| 
      
 1315 
     | 
    
         
            +
            # Micro::Case including the class   4.094k i/100ms
         
     | 
| 
      
 1316 
     | 
    
         
            +
            # Micro::Case::Result#|             7.656k i/100ms
         
     | 
| 
      
 1317 
     | 
    
         
            +
            # Micro::Case::Result#then          7.138k i/100ms
         
     | 
| 
       1317 
1318 
     | 
    
         | 
| 
       1318 
1319 
     | 
    
         
             
            # Calculating -------------------------------------
         
     | 
| 
       1319 
     | 
    
         
            -
            # Interactor::Organizer 
     | 
| 
       1320 
     | 
    
         
            -
            # Micro::Cases.flow([]) 
     | 
| 
       1321 
     | 
    
         
            -
            # Micro::Case flow in a class 
     | 
| 
       1322 
     | 
    
         
            -
            # Micro::Case including the class 
     | 
| 
       1323 
     | 
    
         
            -
            # Micro::Case::Result#| 
     | 
| 
       1324 
     | 
    
         
            -
            # Micro::Case::Result#then 
     | 
| 
      
 1320 
     | 
    
         
            +
            # Interactor::Organizer             24.290k (±24.0%) i/s -    113.967k in   5.032825s
         
     | 
| 
      
 1321 
     | 
    
         
            +
            # Micro::Cases.flow([])             74.790k (±11.1%) i/s -    374.784k in   5.071740s
         
     | 
| 
      
 1322 
     | 
    
         
            +
            # Micro::Case flow in a class       47.043k (± 8.0%) i/s -    235.984k in   5.047477s
         
     | 
| 
      
 1323 
     | 
    
         
            +
            # Micro::Case including the class   42.030k (± 8.5%) i/s -    208.794k in   5.002138s
         
     | 
| 
      
 1324 
     | 
    
         
            +
            # Micro::Case::Result#|             80.936k (±15.9%) i/s -    398.112k in   5.052531s
         
     | 
| 
      
 1325 
     | 
    
         
            +
            # Micro::Case::Result#then          71.459k (± 8.8%) i/s -    356.900k in   5.030526s
         
     | 
| 
       1325 
1326 
     | 
    
         | 
| 
       1326 
1327 
     | 
    
         
             
            # Comparison:
         
     | 
| 
       1327 
     | 
    
         
            -
            # Micro::Case::Result#|: 
     | 
| 
       1328 
     | 
    
         
            -
            # Micro:: 
     | 
| 
       1329 
     | 
    
         
            -
            # Micro:: 
     | 
| 
       1330 
     | 
    
         
            -
            # Micro::Case flow in a class: 
     | 
| 
       1331 
     | 
    
         
            -
            # Micro::Case including the class: 
     | 
| 
       1332 
     | 
    
         
            -
            # Interactor::Organizer: 
     | 
| 
      
 1328 
     | 
    
         
            +
            # Micro::Case::Result#|:            80936.2 i/s
         
     | 
| 
      
 1329 
     | 
    
         
            +
            # Micro::Cases.flow([]):            74790.1 i/s - same-ish: difference falls within error
         
     | 
| 
      
 1330 
     | 
    
         
            +
            # Micro::Case::Result#then:         71459.5 i/s - same-ish: difference falls within error
         
     | 
| 
      
 1331 
     | 
    
         
            +
            # Micro::Case flow in a class:      47042.6 i/s - 1.72x  (± 0.00) slower
         
     | 
| 
      
 1332 
     | 
    
         
            +
            # Micro::Case including the class:  42030.2 i/s - 1.93x  (± 0.00) slower
         
     | 
| 
      
 1333 
     | 
    
         
            +
            # Interactor::Organizer:            24290.3 i/s - 3.33x  (± 0.00) slower
         
     | 
| 
       1333 
1334 
     | 
    
         
             
            ```
         
     | 
| 
       1334 
1335 
     | 
    
         
             
            </details>
         
     | 
| 
       1335 
1336 
     | 
    
         | 
| 
         @@ -1338,28 +1339,28 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai 
     | 
|
| 
       1338 
1339 
     | 
    
         | 
| 
       1339 
1340 
     | 
    
         
             
            ```ruby
         
     | 
| 
       1340 
1341 
     | 
    
         
             
            # Warming up --------------------------------------
         
     | 
| 
       1341 
     | 
    
         
            -
            # Interactor::Organizer             
     | 
| 
       1342 
     | 
    
         
            -
            # Micro::Cases.flow([]) 
     | 
| 
       1343 
     | 
    
         
            -
            # Micro::Case flow in a class       
     | 
| 
       1344 
     | 
    
         
            -
            # Micro::Case including the class   
     | 
| 
       1345 
     | 
    
         
            -
            # Micro::Case::Result#| 
     | 
| 
       1346 
     | 
    
         
            -
            # Micro::Case::Result#then 
     | 
| 
      
 1342 
     | 
    
         
            +
            # Interactor::Organizer            1.734k i/100ms
         
     | 
| 
      
 1343 
     | 
    
         
            +
            # Micro::Cases.flow([])            7.515k i/100ms
         
     | 
| 
      
 1344 
     | 
    
         
            +
            # Micro::Case flow in a class      4.636k i/100ms
         
     | 
| 
      
 1345 
     | 
    
         
            +
            # Micro::Case including the class  4.114k i/100ms
         
     | 
| 
      
 1346 
     | 
    
         
            +
            # Micro::Case::Result#|            7.588k i/100ms
         
     | 
| 
      
 1347 
     | 
    
         
            +
            # Micro::Case::Result#then         6.681k i/100ms
         
     | 
| 
       1347 
1348 
     | 
    
         | 
| 
       1348 
1349 
     | 
    
         
             
            # Calculating -------------------------------------
         
     | 
| 
       1349 
     | 
    
         
            -
            # Interactor::Organizer             
     | 
| 
       1350 
     | 
    
         
            -
            # Micro::Cases.flow([]) 
     | 
| 
       1351 
     | 
    
         
            -
            # Micro::Case flow in a class       
     | 
| 
       1352 
     | 
    
         
            -
            # Micro::Case including the class   
     | 
| 
       1353 
     | 
    
         
            -
            # Micro::Case::Result#| 
     | 
| 
       1354 
     | 
    
         
            -
            # Micro::Case::Result#then 
     | 
| 
      
 1350 
     | 
    
         
            +
            # Interactor::Organizer            24.280k (±24.5%) i/s -    112.710k in   5.013334s
         
     | 
| 
      
 1351 
     | 
    
         
            +
            # Micro::Cases.flow([])            74.999k (± 9.8%) i/s -    375.750k in   5.055777s
         
     | 
| 
      
 1352 
     | 
    
         
            +
            # Micro::Case flow in a class      46.681k (± 9.3%) i/s -    236.436k in   5.105105s
         
     | 
| 
      
 1353 
     | 
    
         
            +
            # Micro::Case including the class  41.921k (± 8.9%) i/s -    209.814k in   5.043622s
         
     | 
| 
      
 1354 
     | 
    
         
            +
            # Micro::Case::Result#|            78.280k (±12.6%) i/s -    386.988k in   5.022146s
         
     | 
| 
      
 1355 
     | 
    
         
            +
            # Micro::Case::Result#then         68.898k (± 8.8%) i/s -    347.412k in   5.080116s
         
     | 
| 
       1355 
1356 
     | 
    
         | 
| 
       1356 
1357 
     | 
    
         
             
            # Comparison:
         
     | 
| 
       1357 
     | 
    
         
            -
            # Micro::Case::Result#|: 
     | 
| 
       1358 
     | 
    
         
            -
            # Micro:: 
     | 
| 
       1359 
     | 
    
         
            -
            # Micro:: 
     | 
| 
       1360 
     | 
    
         
            -
            # Micro::Case flow in a class: 
     | 
| 
       1361 
     | 
    
         
            -
            # Micro::Case including the class: 
     | 
| 
       1362 
     | 
    
         
            -
            # Interactor::Organizer: 
     | 
| 
      
 1358 
     | 
    
         
            +
            # Micro::Case::Result#|:            78280.4 i/s
         
     | 
| 
      
 1359 
     | 
    
         
            +
            # Micro::Cases.flow([]):            74999.4 i/s - same-ish: difference falls within error
         
     | 
| 
      
 1360 
     | 
    
         
            +
            # Micro::Case::Result#then:         68898.4 i/s - same-ish: difference falls within error
         
     | 
| 
      
 1361 
     | 
    
         
            +
            # Micro::Case flow in a class:      46681.0 i/s - 1.68x  (± 0.00) slower
         
     | 
| 
      
 1362 
     | 
    
         
            +
            # Micro::Case including the class:  41920.8 i/s - 1.87x  (± 0.00) slower
         
     | 
| 
      
 1363 
     | 
    
         
            +
            # Interactor::Organizer:            24280.0 i/s - 3.22x  (± 0.00) slower
         
     | 
| 
       1363 
1364 
     | 
    
         
             
            ```
         
     | 
| 
       1364 
1365 
     | 
    
         
             
            </details>
         
     | 
| 
       1365 
1366 
     | 
    
         |