Relax constraint in hash_map::EntryRef insertion methods K: From<&Q> to &Q: Into<K> #611
      
        
          +14
        
        
          −7
        
        
          
        
      
    
  
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
Currently
EntryRef::or_insert*methods have constraintK: From<&Q>which is required to construct "owned" key from "borrowed" key during insertion operation.Rust documentation recommends not to use
Fromas trait constraint, and instead prefer to use reversedIntotrait constraint:https://doc.rust-lang.org/std/convert/trait.From.html
Changing constraint
K: From<&Q>to&Q: Into<K>extends support of insert operation to additional cases whereKdoes not implement traitFrom<&Q>, but&Qdoes implement traitInto<K>.API compatibility:
&Q: Into<K>is a strict superset ofK: From<&Q>(because of blanket implementation https://doc.rust-lang.org/std/convert/trait.Into.html#impl-Into%3CU%3E-for-T), so this change does not break existing hashbrown API compatibility; all existing code will work with new trait constraints.