diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2021-08-18 19:54:57 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-18 19:54:57 +0200 |
| commit | 9b7c771713ec2678f9dbd7a398f3759b253d960e (patch) | |
| tree | 17be286d6e1ec98ae3758fae14dd4bcecd1c5ee9 | |
| parent | 627bc60702395b0527c4c89888ad2eabfa3e3fd4 (diff) | |
| parent | 58f988fa408fb58266c1fbbc62fa29c4473d5e10 (diff) | |
| download | rust-9b7c771713ec2678f9dbd7a398f3759b253d960e.tar.gz rust-9b7c771713ec2678f9dbd7a398f3759b253d960e.zip | |
Rollup merge of #88031 - ibraheemdev:build-hasher-object-safe, r=m-ou-se
Make `BuildHasher` object safe Resolves #87991
| -rw-r--r-- | library/core/src/hash/mod.rs | 5 | ||||
| -rw-r--r-- | library/core/tests/hash/mod.rs | 9 |
2 files changed, 12 insertions, 2 deletions
diff --git a/library/core/src/hash/mod.rs b/library/core/src/hash/mod.rs index 510e233b431..77161e961e7 100644 --- a/library/core/src/hash/mod.rs +++ b/library/core/src/hash/mod.rs @@ -520,7 +520,10 @@ pub trait BuildHasher { /// ); /// ``` #[unstable(feature = "build_hasher_simple_hash_one", issue = "86161")] - fn hash_one<T: Hash>(&self, x: T) -> u64 { + fn hash_one<T: Hash>(&self, x: T) -> u64 + where + Self: Sized, + { let mut hasher = self.build_hasher(); x.hash(&mut hasher); hasher.finish() diff --git a/library/core/tests/hash/mod.rs b/library/core/tests/hash/mod.rs index 1566d357490..72ccdd4848a 100644 --- a/library/core/tests/hash/mod.rs +++ b/library/core/tests/hash/mod.rs @@ -1,7 +1,7 @@ mod sip; use std::default::Default; -use std::hash::{Hash, Hasher}; +use std::hash::{BuildHasher, Hash, Hasher}; use std::rc::Rc; struct MyHasher { @@ -139,3 +139,10 @@ fn test_indirect_hasher() { } assert_eq!(hasher.hash, 5); } + +#[test] +fn test_build_hasher_object_safe() { + use std::collections::hash_map::{DefaultHasher, RandomState}; + + let _: &dyn BuildHasher<Hasher = DefaultHasher> = &RandomState::new(); +} |
