const_with_hasher test: actually construct a usable HashMap
This commit is contained in:
parent
b5f4883a06
commit
34432f7494
@ -5,7 +5,7 @@
|
|||||||
use super::HashMap;
|
use super::HashMap;
|
||||||
use crate::assert_matches::assert_matches;
|
use crate::assert_matches::assert_matches;
|
||||||
use crate::cell::RefCell;
|
use crate::cell::RefCell;
|
||||||
use crate::hash::RandomState;
|
use crate::hash::{BuildHasher, BuildHasherDefault, DefaultHasher, RandomState};
|
||||||
use crate::test_helpers::test_rng;
|
use crate::test_helpers::test_rng;
|
||||||
|
|
||||||
// https://github.com/rust-lang/rust/issues/62301
|
// https://github.com/rust-lang/rust/issues/62301
|
||||||
@ -1124,6 +1124,26 @@ fn from_array() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn const_with_hasher() {
|
fn const_with_hasher() {
|
||||||
const X: HashMap<(), (), ()> = HashMap::with_hasher(());
|
const X: HashMap<(), (), BuildHasherDefault<DefaultHasher>> =
|
||||||
assert_eq!(X.len(), 0);
|
HashMap::with_hasher(BuildHasherDefault::new());
|
||||||
|
let mut x = X;
|
||||||
|
assert_eq!(x.len(), 0);
|
||||||
|
x.insert((), ());
|
||||||
|
assert_eq!(x.len(), 1);
|
||||||
|
|
||||||
|
// It *is* possible to do this without using the `BuildHasherDefault` type.
|
||||||
|
struct MyBuildDefaultHasher;
|
||||||
|
impl BuildHasher for MyBuildDefaultHasher {
|
||||||
|
type Hasher = DefaultHasher;
|
||||||
|
|
||||||
|
fn build_hasher(&self) -> Self::Hasher {
|
||||||
|
DefaultHasher::new()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const Y: HashMap<(), (), MyBuildDefaultHasher> = HashMap::with_hasher(MyBuildDefaultHasher);
|
||||||
|
let mut y = Y;
|
||||||
|
assert_eq!(y.len(), 0);
|
||||||
|
y.insert((), ());
|
||||||
|
assert_eq!(y.len(), 1);
|
||||||
}
|
}
|
||||||
|
@ -328,6 +328,7 @@
|
|||||||
// Library features (core):
|
// Library features (core):
|
||||||
// tidy-alphabetical-start
|
// tidy-alphabetical-start
|
||||||
#![feature(array_chunks)]
|
#![feature(array_chunks)]
|
||||||
|
#![feature(build_hasher_default_const_new)]
|
||||||
#![feature(c_str_module)]
|
#![feature(c_str_module)]
|
||||||
#![feature(char_internals)]
|
#![feature(char_internals)]
|
||||||
#![feature(clone_to_uninit)]
|
#![feature(clone_to_uninit)]
|
||||||
|
Loading…
Reference in New Issue
Block a user