From 1384a43db3a8b1551bfc3c6feb37e2174d4c2ba0 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Fri, 24 Oct 2014 12:25:50 -0500 Subject: DSTify Hash - 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: ``` hashmap.find_equiv(&"Hello"); hashmap.find_equiv(&&[0u8, 1, 2]); ``` to: ``` hashmap.find_equiv("Hello"); hashmap.find_equiv(&[0u8, 1, 2]); ``` - The generic parameter `T` of the `Hasher::hash` method have become `Sized?`. Downstream code must add `Sized?` to that method in their implementations. For example: ``` impl Hasher for FnvHasher { fn hash>(&self, t: &T) -> u64 { /* .. */ } } ``` must be changed to: ``` impl Hasher for FnvHasher { fn hash>(&self, t: &T) -> u64 { /* .. */ } // ^^^^^^ } ``` [breaking-change] --- src/libsyntax/diagnostics/registry.rs | 2 +- src/libsyntax/ext/format.rs | 6 +++--- src/libsyntax/util/interner.rs | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/libsyntax') diff --git a/src/libsyntax/diagnostics/registry.rs b/src/libsyntax/diagnostics/registry.rs index 7bc191df55a..71d82a41f38 100644 --- a/src/libsyntax/diagnostics/registry.rs +++ b/src/libsyntax/diagnostics/registry.rs @@ -20,6 +20,6 @@ impl Registry { } pub fn find_description(&self, code: &str) -> Option<&'static str> { - self.descriptions.find_equiv(&code).map(|desc| *desc) + self.descriptions.find_equiv(code).map(|desc| *desc) } } diff --git a/src/libsyntax/ext/format.rs b/src/libsyntax/ext/format.rs index fa9a844233a..53d091db095 100644 --- a/src/libsyntax/ext/format.rs +++ b/src/libsyntax/ext/format.rs @@ -140,7 +140,7 @@ fn parse_args(ecx: &mut ExtCtxt, sp: Span, allow_method: bool, let name = interned_name.get(); p.expect(&token::Eq); let e = p.parse_expr(); - match names.find_equiv(&name) { + match names.find_equiv(name) { None => {} Some(prev) => { ecx.span_err(e.span, @@ -362,7 +362,7 @@ impl<'a, 'b> Context<'a, 'b> { self.ecx.expr_path(path) } parse::CountIsName(n) => { - let i = match self.name_positions.find_equiv(&n) { + let i = match self.name_positions.find_equiv(n) { Some(&i) => i, None => 0, // error already emitted elsewhere }; @@ -406,7 +406,7 @@ impl<'a, 'b> Context<'a, 'b> { // Named arguments are converted to positional arguments at // the end of the list of arguments parse::ArgumentNamed(n) => { - let i = match self.name_positions.find_equiv(&n) { + let i = match self.name_positions.find_equiv(n) { Some(&i) => i, None => 0, // error already emitted elsewhere }; 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 Interner { (*vect).len() } - pub fn find_equiv>(&self, val: &Q) -> Option { + pub fn find_equiv>(&self, val: &Q) -> Option { 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>(&self, val: &Q) -> Option { + pub fn find_equiv>(&self, val: &Q) -> Option { match (*self.map.borrow()).find_equiv(val) { Some(v) => Some(*v), None => None, -- cgit 1.4.1-3-g733a5