diff options
| author | bors <bors@rust-lang.org> | 2014-10-31 17:11:43 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-10-31 17:11:43 +0000 |
| commit | 5e834243b6837a2386d623e1d546a3d25057b8f5 (patch) | |
| tree | eae18a8506858edd48394dc84ae7f69bf7832b36 /src/libsyntax/util | |
| parent | 7e662316d1c2618c87eb0328aa6b2bccd7eaa8d4 (diff) | |
| parent | 1384a43db3a8b1551bfc3c6feb37e2174d4c2ba0 (diff) | |
| download | rust-5e834243b6837a2386d623e1d546a3d25057b8f5.tar.gz rust-5e834243b6837a2386d623e1d546a3d25057b8f5.zip | |
auto merge of #18440 : japaric/rust/hash, r=alexcrichton
- The signature of the `*_equiv` methods of `HashMap` and similar structures have changed, and now require one less level of indirection. Change your code from:
``` rust
hashmap.find_equiv(&"Hello");
hashmap.find_equiv(&&[0u8, 1, 2]);
```
to:
``` rust
hashmap.find_equiv("Hello");
hashmap.find_equiv(&[0u8, 1, 2]);
```
- The generic parameter `T` of the `Hasher::hash<T>` method have become `Sized?`. Downstream code must add `Sized?` to that method in their implementations. For example:
``` rust
impl Hasher<FnvState> for FnvHasher {
fn hash<T: Hash<FnvState>>(&self, t: &T) -> u64 { /* .. */ }
}
```
must be changed to:
``` rust
impl Hasher<FnvState> for FnvHasher {
fn hash<Sized? T: Hash<FnvState>>(&self, t: &T) -> u64 { /* .. */ }
// ^^^^^^
}
```
[breaking-change]
---
After review I'll squash the commits and update the commit message with the above paragraph.
r? @aturon
cc #16918
Diffstat (limited to 'src/libsyntax/util')
| -rw-r--r-- | src/libsyntax/util/interner.rs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/libsyntax/util/interner.rs b/src/libsyntax/util/interner.rs index ed2455d0a30..105118ff76a 100644 --- a/src/libsyntax/util/interner.rs +++ b/src/libsyntax/util/interner.rs @@ -75,7 +75,7 @@ impl<T: Eq + Hash + Clone + 'static> Interner<T> { (*vect).len() } - pub fn find_equiv<Q:Hash + Equiv<T>>(&self, val: &Q) -> Option<Name> { + pub fn find_equiv<Sized? Q: Hash + Equiv<T>>(&self, val: &Q) -> Option<Name> { let map = self.map.borrow(); match (*map).find_equiv(val) { Some(v) => Some(*v), @@ -149,7 +149,7 @@ impl StrInterner { pub fn intern(&self, val: &str) -> Name { let mut map = self.map.borrow_mut(); - match map.find_equiv(&val) { + match map.find_equiv(val) { Some(&idx) => return idx, None => (), } @@ -195,7 +195,7 @@ impl StrInterner { self.vect.borrow().len() } - pub fn find_equiv<Q:Hash + Equiv<RcStr>>(&self, val: &Q) -> Option<Name> { + pub fn find_equiv<Sized? Q:Hash + Equiv<RcStr>>(&self, val: &Q) -> Option<Name> { match (*self.map.borrow()).find_equiv(val) { Some(v) => Some(*v), None => None, |
