This patch uses a hash function that takes into account the hashes of struct elements, instead of just returning 0. This make hashes of Thrift structs O(1) instead of O(n).
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@780094
13f79535-47bb-0310-9956-
ffa450edef68
self.class == other.class && self == other
end
- # for the time being, we're ok with a naive hash. this could definitely be improved upon.
def hash
- 0
+ field_values = []
+ each_field do |fid, field_info|
+ name = field_info[:name]
+ field_values << self.instance_variable_get("@#{name}")
+ end
+ field_values.hash
end
def differences(other)