
Issue #16993 has been updated by mame (Yusuke Endoh). This was discussed at the dev meeting. @matz wanted to hear more about the use cases for this method first. Also, since Set is currently in a halfway state where it is not fully built-in, a built-in `Hash#key_set` might require a special hack like `Enumerable#to_set`. https://github.com/ruby/ruby/blob/7c88cbb4a6c486348c44be24941f17ef8be6b329/p... @akr pointed out the possible consistency issue of `Hash#compare_by_identity`. Since `Hash#transform_values` keeps this `compare_by_identity` flag, the proposed patch will assign a Hash with `compare_by_identity` flag to `@hash` in Set. We will need to review it carefully to make sure it does not break the implicit assumptions of `set.rb`. ---------------------------------------- Feature #16993: Sets: from hash keys using Hash#key_set https://bugs.ruby-lang.org/issues/16993#change-112294 * Author: marcandre (Marc-Andre Lafortune) * Status: Open ---------------------------------------- To create a set from hash keys currently implies a temporary array for all keys, rehashing all those keys and rebuilding a hash. Instead, the hash could be copied and its values set to `true`. ```ruby h = {a: 1} # Now: Set.new(h.keys) # => Set[:a] # After h.key_set # => Set[:a], efficiently. ``` -- https://bugs.ruby-lang.org/