Even after patching hashbrown with #353 , AVR applications using hashbrown fail to compile because ahash fails:
error[E0432]: unresolved import `core::sync::atomic::AtomicUsize`
--> /home/thoth/.cargo/registry/src/github.com-1ecc6299db9ec823/ahash-0.7.6/src/random_state.rs:33:26
|
33 | use core::sync::atomic::{AtomicUsize, Ordering};
| ^^^^^^^^^^^ no `AtomicUsize` in `sync::atomic`
tkaitchuck/aHash#124 would solve this issue, but for the 0.8.0 release of ahash.
Attempting to switch hashbrown to the 0.8 release of ahash results in a cascade of errors:
error[E0599]: the function or associated item `default` exists for struct `HashMap<K, V>`, but its trait bounds were not satisfied
--> /home/thoth/vendor/hashbrown/src/map.rs:308:15
|
188 | pub struct HashMap<K, V, S = DefaultHashBuilder, A: Allocator + Clone = Global> {
| -------------------------------------------------------------------------------
| |
| function or associated item `default` not found for this struct
| doesn't satisfy `HashMap<K, V>: Default`
...
308 | Self::default()
| ^^^^^^^ function or associated item cannot be called on `HashMap<K, V>` due to unsatisfied trait bounds
|
::: /home/thoth/vendor/aHash/src/random_state.rs:202:1
|
202 | pub struct RandomState {
| ---------------------- doesn't satisfy `RandomState: Default`
|
note: trait bound `RandomState: Default` was not satisfied
--> /home/thoth/vendor/hashbrown/src/map.rs:2117:8
|
2115 | impl<K, V, S, A> Default for HashMap<K, V, S, A>
| ------- -------------------
2116 | where
2117 | S: Default,
| ^^^^^^^ unsatisfied trait bound introduced here
= help: items from traits can only be used if the trait is implemented and in scope
= note: the following trait defines an item `default`, perhaps you need to implement it:
candidate #1: `Default`
error[E0599]: no function or associated item named `default` found for struct `RandomState` in the current scope
--> /home/thoth/vendor/hashbrown/src/map.rs:326:70
|
326 | Self::with_capacity_and_hasher(capacity, DefaultHashBuilder::default())
| ^^^^^^^ function or associated item not found in `RandomState`
error[E0599]: no function or associated item named `default` found for struct `RandomState` in the current scope
--> /home/thoth/vendor/hashbrown/src/map.rs:338:50
|
338 | Self::with_hasher_in(DefaultHashBuilder::default(), alloc)
| ^^^^^^^ function or associated item not found in `RandomState`
error[E0599]: no function or associated item named `default` found for struct `RandomState` in the current scope
--> /home/thoth/vendor/hashbrown/src/map.rs:347:73
|
347 | Self::with_capacity_and_hasher_in(capacity, DefaultHashBuilder::default(), alloc)
| ^^^^^^^ function or associated item not found in `RandomState`
error[E0277]: the trait bound `RandomState: Default` is not satisfied
--> /home/thoth/vendor/hashbrown/src/map.rs:2189:25
|
2189 | arr.into_iter().collect()
| ^^^^^^^ the trait `Default` is not implemented for `RandomState`
|
= help: the trait `FromIterator<(K, V)>` is implemented for `HashMap<K, V, S, A>`
note: required because of the requirements on the impl of `FromIterator<(K, V)>` for `HashMap<K, V, RandomState, A>`
--> /home/thoth/vendor/hashbrown/src/map.rs:6333:18
|
6333 | impl<K, V, S, A> FromIterator<(K, V)> for HashMap<K, V, S, A>
| ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^
note: required by a bound in `collect`
--> /home/thoth/.rustup/toolchains/nightly-2022-07-10-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:1832:19
|
1832 | fn collect<B: FromIterator<Self::Item>>(self) -> B
| ^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `collect`
error[E0277]: the trait bound `RandomState: Default` is not satisfied
--> /home/thoth/vendor/hashbrown/src/set.rs:1220:25
|
1220 | arr.into_iter().collect()
| ^^^^^^^ the trait `Default` is not implemented for `RandomState`
|
= help: the trait `FromIterator<T>` is implemented for `HashSet<T, S, A>`
note: required because of the requirements on the impl of `FromIterator<T>` for `HashSet<T, RandomState, A>`
--> /home/thoth/vendor/hashbrown/src/set.rs:1189:15
|
1189 | impl<T, S, A> FromIterator<T> for HashSet<T, S, A>
| ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
note: required by a bound in `collect`
--> /home/thoth/.rustup/toolchains/nightly-2022-07-10-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:1832:19
|
1832 | fn collect<B: FromIterator<Self::Item>>(self) -> B
| ^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `collect`
I can imagine two ways forward:
modify hashbrown to support ahash 0.8.0 and wait for tkaitchuck/aHash#124 to be merged
Even after patching hashbrown with #353 , AVR applications using hashbrown fail to compile because ahash fails:
tkaitchuck/aHash#124 would solve this issue, but for the 0.8.0 release of ahash.
Attempting to switch hashbrown to the 0.8 release of ahash results in a cascade of errors:
I can imagine two ways forward: