| Total Complexity | 5 | 
| Total Lines | 22 | 
| Duplicated Lines | 0 % | 
| Changes | 1 | ||
| Bugs | 0 | Features | 0 | 
| 1 | # frozen_string_literal: true  | 
            ||
| 9 | class HashTuple  | 
            ||
| 10 | attr_accessor :key  | 
            ||
| 11 | attr_accessor :value  | 
            ||
| 12 | |||
| 13 | def initialize(key: nil, value: nil)  | 
            ||
| 14 | @key = key  | 
            ||
| 15 | @value = value  | 
            ||
| 16 | end  | 
            ||
| 17 | |||
| 18 | def hash  | 
            ||
| 19 | @key.hash ^ @value.hash  | 
            ||
| 20 | end  | 
            ||
| 21 | |||
| 22 | def eql?(other)  | 
            ||
| 23 | return false unless other.is_a?(HashTuple)  | 
            ||
| 24 | @key == other.key && @value == other.value  | 
            ||
| 25 | end  | 
            ||
| 26 | |||
| 27 | def ==(other)  | 
            ||
| 28 | eql?(other)  | 
            ||
| 29 | end  | 
            ||
| 30 | end  | 
            ||
| 31 | end  | 
            ||
| 36 |