diff options
| author | bors <bors@rust-lang.org> | 2022-10-05 08:47:56 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-10-05 08:47:56 +0000 |
| commit | dd8c3a80dd2e5a0b62c3ef77511f3296070f78e2 (patch) | |
| tree | 2fb2a7d54b8d152dc4eb127539f7793e3649776e /library/std/src | |
| parent | d8613f792c11d6d348b15eee79da561323fa0199 (diff) | |
| parent | 40ce4af232e2ede154fec2f7fcaa2417d830b69d (diff) | |
| download | rust-dd8c3a80dd2e5a0b62c3ef77511f3296070f78e2.tar.gz rust-dd8c3a80dd2e5a0b62c3ef77511f3296070f78e2.zip | |
Auto merge of #102691 - notriddle:rollup-tdtyagp, r=notriddle
Rollup of 5 pull requests
Successful merges:
- #102574 (Make Hash{Set,Map}::with_hasher unstably const)
- #102650 (Slightly improve no return for returning function error)
- #102662 (rustdoc: remove no-op CSS `.code-header { display: block }`)
- #102670 (follow-up fix about 101866 to print the self type.)
- #102686 (Don't build the compiler before building rls)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
Diffstat (limited to 'library/std/src')
| -rw-r--r-- | library/std/src/collections/hash/map.rs | 3 | ||||
| -rw-r--r-- | library/std/src/collections/hash/map/tests.rs | 6 | ||||
| -rw-r--r-- | library/std/src/collections/hash/set.rs | 3 | ||||
| -rw-r--r-- | library/std/src/collections/hash/set/tests.rs | 6 | ||||
| -rw-r--r-- | library/std/src/lib.rs | 1 |
5 files changed, 17 insertions, 2 deletions
diff --git a/library/std/src/collections/hash/map.rs b/library/std/src/collections/hash/map.rs index d2db4bb7a46..34983b976e3 100644 --- a/library/std/src/collections/hash/map.rs +++ b/library/std/src/collections/hash/map.rs @@ -280,7 +280,8 @@ impl<K, V, S> HashMap<K, V, S> { /// ``` #[inline] #[stable(feature = "hashmap_build_hasher", since = "1.7.0")] - pub fn with_hasher(hash_builder: S) -> HashMap<K, V, S> { + #[rustc_const_unstable(feature = "const_collections_with_hasher", issue = "102575")] + pub const fn with_hasher(hash_builder: S) -> HashMap<K, V, S> { HashMap { base: base::HashMap::with_hasher(hash_builder) } } diff --git a/library/std/src/collections/hash/map/tests.rs b/library/std/src/collections/hash/map/tests.rs index cb3032719fa..65634f2063f 100644 --- a/library/std/src/collections/hash/map/tests.rs +++ b/library/std/src/collections/hash/map/tests.rs @@ -1115,3 +1115,9 @@ fn from_array() { // that's a problem! let _must_not_require_type_annotation = HashMap::from([(1, 2)]); } + +#[test] +fn const_with_hasher() { + const X: HashMap<(), (), ()> = HashMap::with_hasher(()); + assert_eq!(X.len(), 0); +} diff --git a/library/std/src/collections/hash/set.rs b/library/std/src/collections/hash/set.rs index 5b6a415fadc..c36eeae3388 100644 --- a/library/std/src/collections/hash/set.rs +++ b/library/std/src/collections/hash/set.rs @@ -376,7 +376,8 @@ impl<T, S> HashSet<T, S> { /// ``` #[inline] #[stable(feature = "hashmap_build_hasher", since = "1.7.0")] - pub fn with_hasher(hasher: S) -> HashSet<T, S> { + #[rustc_const_unstable(feature = "const_collections_with_hasher", issue = "102575")] + pub const fn with_hasher(hasher: S) -> HashSet<T, S> { HashSet { base: base::HashSet::with_hasher(hasher) } } diff --git a/library/std/src/collections/hash/set/tests.rs b/library/std/src/collections/hash/set/tests.rs index 233db276b9e..941a0450cc7 100644 --- a/library/std/src/collections/hash/set/tests.rs +++ b/library/std/src/collections/hash/set/tests.rs @@ -496,3 +496,9 @@ fn from_array() { // that's a problem! let _must_not_require_type_annotation = HashSet::from([1, 2]); } + +#[test] +fn const_with_hasher() { + const X: HashSet<(), ()> = HashSet::with_hasher(()); + assert_eq!(X.len(), 0); +} diff --git a/library/std/src/lib.rs b/library/std/src/lib.rs index 2700659d4e9..a497acda4f6 100644 --- a/library/std/src/lib.rs +++ b/library/std/src/lib.rs @@ -351,6 +351,7 @@ // Only used in tests/benchmarks: // // Only for const-ness: +#![feature(const_collections_with_hasher)] #![feature(const_io_structs)] #![feature(const_ip)] #![feature(const_ipv4)] |
