Skip to content

Conversation

@adwinwhite
Copy link
Contributor

@adwinwhite adwinwhite commented Jan 4, 2026

Experiment for #149283.
Blocked on some fatal regressions.

r? @ghost

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Jan 4, 2026
@rust-log-analyzer

This comment has been minimized.

@fmease fmease added the T-types Relevant to the types team, which will review and decide on the PR/issue. label Jan 4, 2026
@rust-log-analyzer
Copy link
Collaborator

The job aarch64-gnu-llvm-20-1 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
[RUSTC-TIMING] unic_langid_macros_impl test:false 0.652
   Compiling regex-automata v0.4.13
[RUSTC-TIMING] zerovec_derive test:false 1.755
   Compiling zerovec v0.11.5
error[E0271]: type mismatch resolving `<ZeroSlice<V> as ZeroVecLike<V>>::GetType == <V as ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/borrowed.rs:239:22
    |
239 |     V: ZeroMapKV<'a, Slice = ZeroSlice<V>> + AsULE + Copy + 'static,
    |                      ^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroSlice<V> as ZeroVecLike<V>>::GetType == <V as ZeroMapKV<'a>>::GetType`
    |
note: expected this to be `<V as kv::ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:235:20
    |
235 |     type GetType = T::ULE;
    |                    ^^^^^^
    = note: expected associated type `<V as kv::ZeroMapKV<'a>>::GetType`
               found associated type `<V as ule::AsULE>::ULE`
    = note: an associated type was expected, but a different one was found

error[E0271]: type mismatch resolving `<ZeroSlice<K> as ZeroVecLike<K>>::GetType == <K as ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/borrowed.rs:271:22
    |
271 |     K: ZeroMapKV<'a, Slice = ZeroSlice<K>> + AsULE + Copy + Ord + 'static,
    |                      ^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroSlice<K> as ZeroVecLike<K>>::GetType == <K as ZeroMapKV<'a>>::GetType`
    |
note: expected this to be `<K as kv::ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:235:20
    |
235 |     type GetType = T::ULE;
    |                    ^^^^^^
    = note: expected associated type `<K as kv::ZeroMapKV<'a>>::GetType`
               found associated type `<K as ule::AsULE>::ULE`
    = note: an associated type was expected, but a different one was found

error[E0271]: type mismatch resolving `<ZeroSlice<V> as ZeroVecLike<V>>::GetType == <V as ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/borrowed.rs:272:22
    |
272 |     V: ZeroMapKV<'a, Slice = ZeroSlice<V>> + AsULE + Copy + 'static,
    |                      ^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroSlice<V> as ZeroVecLike<V>>::GetType == <V as ZeroMapKV<'a>>::GetType`
    |
note: expected this to be `<V as kv::ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:235:20
    |
235 |     type GetType = T::ULE;
    |                    ^^^^^^
    = note: expected associated type `<V as kv::ZeroMapKV<'a>>::GetType`
               found associated type `<V as ule::AsULE>::ULE`
    = note: an associated type was expected, but a different one was found

error[E0271]: type mismatch resolving `<ZeroVec<'a, K> as MutableZeroVecLike<'a, K>>::OwnedType == <K as ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:326:30
    |
324 | impl<'a, K, V> ZeroMap<'a, K, V>
    |          - found this type parameter
325 | where
326 |     K: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, K>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, K> as MutableZeroVecLike<'a, K>>::OwnedType == <K as ZeroMapKV<'a>>::OwnedType`
    |
note: expected this to be `<K as kv::ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:290:22
    |
290 |     type OwnedType = T;
    |                      ^
    = note: expected associated type `<K as kv::ZeroMapKV<'a>>::OwnedType`
                found type parameter `K`
help: consider further restricting this bound
    |
326 |     K: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, K>, OwnedType = K>,
    |                                                        +++++++++++++++

error[E0271]: type mismatch resolving `<ZeroVec<'a, K> as ZeroVecLike<K>>::GetType == <K as ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:326:30
    |
326 |     K: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, K>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, K> as ZeroVecLike<K>>::GetType == <K as ZeroMapKV<'a>>::GetType`
    |
note: expected this to be `<K as kv::ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:183:20
    |
183 |     type GetType = T::ULE;
    |                    ^^^^^^
    = note: expected associated type `<K as kv::ZeroMapKV<'a>>::GetType`
               found associated type `<K as ule::AsULE>::ULE`
    = note: an associated type was expected, but a different one was found

error[E0271]: type mismatch resolving `<ZeroVec<'a, K> as ZeroVecLike<K>>::SliceVariant == <K as ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:326:30
    |
326 |     K: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, K>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, K> as ZeroVecLike<K>>::SliceVariant == <K as ZeroMapKV<'a>>::Slice`
    |
note: expected this to be `<K as kv::ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:184:25
    |
184 |     type SliceVariant = ZeroSlice<T>;
    |                         ^^^^^^^^^^^^
    = note: expected associated type `<K as kv::ZeroMapKV<'a>>::Slice`
                        found struct `ZeroSlice<K>`
help: consider constraining the associated type `<K as kv::ZeroMapKV<'a>>::Slice` to `ZeroSlice<K>`
    |
326 |     K: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, K>, Slice = ZeroSlice<K>>,
    |                                                        ++++++++++++++++++++++

error[E0271]: type mismatch resolving `<ZeroVec<'a, V> as MutableZeroVecLike<'a, V>>::OwnedType == <V as ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:369:30
    |
366 | impl<'a, K, V> ZeroMap<'a, K, V>
    |             - found this type parameter
...
369 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, V> as MutableZeroVecLike<'a, V>>::OwnedType == <V as ZeroMapKV<'a>>::OwnedType`
    |
note: expected this to be `<V as kv::ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:290:22
    |
290 |     type OwnedType = T;
    |                      ^
    = note: expected associated type `<V as kv::ZeroMapKV<'a>>::OwnedType`
                found type parameter `V`
help: consider further restricting this bound
    |
369 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>, OwnedType = V>,
    |                                                        +++++++++++++++

error[E0271]: type mismatch resolving `<ZeroVec<'a, V> as ZeroVecLike<V>>::GetType == <V as ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:369:30
    |
369 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, V> as ZeroVecLike<V>>::GetType == <V as ZeroMapKV<'a>>::GetType`
    |
note: expected this to be `<V as kv::ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:183:20
    |
183 |     type GetType = T::ULE;
    |                    ^^^^^^
    = note: expected associated type `<V as kv::ZeroMapKV<'a>>::GetType`
               found associated type `<V as ule::AsULE>::ULE`
    = note: an associated type was expected, but a different one was found

error[E0271]: type mismatch resolving `<ZeroVec<'a, V> as ZeroVecLike<V>>::SliceVariant == <V as ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:369:30
    |
369 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, V> as ZeroVecLike<V>>::SliceVariant == <V as ZeroMapKV<'a>>::Slice`
    |
note: expected this to be `<V as kv::ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:184:25
    |
184 |     type SliceVariant = ZeroSlice<T>;
    |                         ^^^^^^^^^^^^
    = note: expected associated type `<V as kv::ZeroMapKV<'a>>::Slice`
                        found struct `ZeroSlice<V>`
help: consider constraining the associated type `<V as kv::ZeroMapKV<'a>>::Slice` to `ZeroSlice<V>`
    |
369 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>, Slice = ZeroSlice<V>>,
    |                                                        ++++++++++++++++++++++

error[E0271]: type mismatch resolving `<VarZeroVec<'a, ...> as MutableZeroVecLike<'a, ...>>::OwnedType == <... as ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:411:22
    |
411 |     V: ZeroMapKV<'a, Container = VarZeroVec<'a, V>> + ?Sized,
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<VarZeroVec<'a, ...> as MutableZeroVecLike<'a, ...>>::OwnedType == <... as ZeroMapKV<'a>>::OwnedType`
    |
note: expected this to be `<V as kv::ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:463:22
    |
463 |     type OwnedType = Box<T>;
    |                      ^^^^^^
    = note: expected associated type `<V as kv::ZeroMapKV<'a>>::OwnedType`
                        found struct `Box<V>`
    = note: the full name for the type has been written to '/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/zerovec-44e5260727c14302.long-type-18276582799437523124.txt'
    = note: consider using `--verbose` to print the full type name to the console
help: consider constraining the associated type `<V as kv::ZeroMapKV<'a>>::OwnedType` to `Box<V>`
    |
411 |     V: ZeroMapKV<'a, Container = VarZeroVec<'a, V>, OwnedType = Box<V>> + ?Sized,
    |                                                   ++++++++++++++++++++

error[E0271]: type mismatch resolving `<VarZeroVec<'a, V> as ZeroVecLike<V>>::GetType == <V as ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:411:22
    |
408 | impl<'a, K, V> ZeroMap<'a, K, V>
    |             - found this type parameter
...
411 |     V: ZeroMapKV<'a, Container = VarZeroVec<'a, V>> + ?Sized,
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<VarZeroVec<'a, V> as ZeroVecLike<V>>::GetType == <V as ZeroMapKV<'a>>::GetType`
    |
note: expected this to be `<V as kv::ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:361:20
    |
361 |     type GetType = T;
    |                    ^
    = note: expected associated type `<V as kv::ZeroMapKV<'a>>::GetType`
                found type parameter `V`
help: consider further restricting this bound
    |
411 |     V: ZeroMapKV<'a, Container = VarZeroVec<'a, V>, GetType = V> + ?Sized,
    |                                                   +++++++++++++

error[E0271]: type mismatch resolving `<VarZeroVec<'a, V> as ZeroVecLike<V>>::SliceVariant == <V as ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:411:22
    |
411 |     V: ZeroMapKV<'a, Container = VarZeroVec<'a, V>> + ?Sized,
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<VarZeroVec<'a, V> as ZeroVecLike<V>>::SliceVariant == <V as ZeroMapKV<'a>>::Slice`
    |
note: expected this to be `<V as kv::ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:362:25
    |
362 |     type SliceVariant = VarZeroSlice<T, F>;
    |                         ^^^^^^^^^^^^^^^^^^
    = note: expected associated type `<V as kv::ZeroMapKV<'a>>::Slice`
                        found struct `varzerovec::slice::VarZeroSlice<V>`
help: consider constraining the associated type `<V as kv::ZeroMapKV<'a>>::Slice` to `varzerovec::slice::VarZeroSlice<V>`
    |
411 |     V: ZeroMapKV<'a, Container = VarZeroVec<'a, V>, Slice = varzerovec::slice::VarZeroSlice<V>> + ?Sized,
    |                                                   ++++++++++++++++++++++++++++++++++++++++++++

error[E0271]: type mismatch resolving `<ZeroVec<'a, V> as MutableZeroVecLike<'a, V>>::OwnedType == <V as ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:523:30
    |
520 | impl<'a, K, V> ZeroMap<'a, K, V>
    |             - found this type parameter
...
523 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, V> as MutableZeroVecLike<'a, V>>::OwnedType == <V as ZeroMapKV<'a>>::OwnedType`
    |
note: expected this to be `<V as kv::ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:290:22
    |
290 |     type OwnedType = T;
    |                      ^
    = note: expected associated type `<V as kv::ZeroMapKV<'a>>::OwnedType`
                found type parameter `V`
help: consider further restricting this bound
    |
523 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>, OwnedType = V>,
    |                                                        +++++++++++++++

error[E0271]: type mismatch resolving `<ZeroVec<'a, V> as ZeroVecLike<V>>::GetType == <V as ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:523:30
    |
523 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, V> as ZeroVecLike<V>>::GetType == <V as ZeroMapKV<'a>>::GetType`
    |
note: expected this to be `<V as kv::ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:183:20
    |
183 |     type GetType = T::ULE;
    |                    ^^^^^^
    = note: expected associated type `<V as kv::ZeroMapKV<'a>>::GetType`
               found associated type `<V as ule::AsULE>::ULE`
    = note: an associated type was expected, but a different one was found

error[E0271]: type mismatch resolving `<ZeroVec<'a, V> as ZeroVecLike<V>>::SliceVariant == <V as ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:523:30
    |
523 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, V> as ZeroVecLike<V>>::SliceVariant == <V as ZeroMapKV<'a>>::Slice`
    |
note: expected this to be `<V as kv::ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:184:25
    |
184 |     type SliceVariant = ZeroSlice<T>;
    |                         ^^^^^^^^^^^^
    = note: expected associated type `<V as kv::ZeroMapKV<'a>>::Slice`
                        found struct `ZeroSlice<V>`
help: consider constraining the associated type `<V as kv::ZeroMapKV<'a>>::Slice` to `ZeroSlice<V>`
    |
523 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>, Slice = ZeroSlice<V>>,
    |                                                        ++++++++++++++++++++++

error[E0271]: type mismatch resolving `<ZeroVec<'a, K> as MutableZeroVecLike<'a, K>>::OwnedType == <K as ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:543:30
    |
541 | impl<'a, K, V> ZeroMap<'a, K, V>
    |          - found this type parameter
542 | where
543 |     K: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, K>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, K> as MutableZeroVecLike<'a, K>>::OwnedType == <K as ZeroMapKV<'a>>::OwnedType`
    |
note: expected this to be `<K as kv::ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:290:22
    |
290 |     type OwnedType = T;
    |                      ^
    = note: expected associated type `<K as kv::ZeroMapKV<'a>>::OwnedType`
                found type parameter `K`
help: consider further restricting this bound
    |
543 |     K: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, K>, OwnedType = K>,
    |                                                        +++++++++++++++

error[E0271]: type mismatch resolving `<ZeroVec<'a, K> as ZeroVecLike<K>>::GetType == <K as ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:543:30
    |
543 |     K: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, K>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, K> as ZeroVecLike<K>>::GetType == <K as ZeroMapKV<'a>>::GetType`
    |
note: expected this to be `<K as kv::ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:183:20
    |
183 |     type GetType = T::ULE;
    |                    ^^^^^^
    = note: expected associated type `<K as kv::ZeroMapKV<'a>>::GetType`
               found associated type `<K as ule::AsULE>::ULE`
    = note: an associated type was expected, but a different one was found

error[E0271]: type mismatch resolving `<ZeroVec<'a, K> as ZeroVecLike<K>>::SliceVariant == <K as ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:543:30
    |
543 |     K: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, K>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, K> as ZeroVecLike<K>>::SliceVariant == <K as ZeroMapKV<'a>>::Slice`
    |
note: expected this to be `<K as kv::ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:184:25
    |
184 |     type SliceVariant = ZeroSlice<T>;
    |                         ^^^^^^^^^^^^
    = note: expected associated type `<K as kv::ZeroMapKV<'a>>::Slice`
                        found struct `ZeroSlice<K>`
help: consider constraining the associated type `<K as kv::ZeroMapKV<'a>>::Slice` to `ZeroSlice<K>`
    |
543 |     K: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, K>, Slice = ZeroSlice<K>>,
    |                                                        ++++++++++++++++++++++

error[E0271]: type mismatch resolving `<ZeroVec<'a, V> as MutableZeroVecLike<'a, V>>::OwnedType == <V as ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:544:30
    |
541 | impl<'a, K, V> ZeroMap<'a, K, V>
    |             - found this type parameter
...
544 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, V> as MutableZeroVecLike<'a, V>>::OwnedType == <V as ZeroMapKV<'a>>::OwnedType`
    |
note: expected this to be `<V as kv::ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:290:22
    |
290 |     type OwnedType = T;
    |                      ^
    = note: expected associated type `<V as kv::ZeroMapKV<'a>>::OwnedType`
                found type parameter `V`
help: consider further restricting this bound
    |
544 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>, OwnedType = V>,
    |                                                        +++++++++++++++

error[E0271]: type mismatch resolving `<ZeroVec<'a, V> as ZeroVecLike<V>>::GetType == <V as ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:544:30
    |
544 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, V> as ZeroVecLike<V>>::GetType == <V as ZeroMapKV<'a>>::GetType`
    |
note: expected this to be `<V as kv::ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:183:20
    |
183 |     type GetType = T::ULE;
    |                    ^^^^^^
    = note: expected associated type `<V as kv::ZeroMapKV<'a>>::GetType`
               found associated type `<V as ule::AsULE>::ULE`
    = note: an associated type was expected, but a different one was found

error[E0271]: type mismatch resolving `<ZeroVec<'a, V> as ZeroVecLike<V>>::SliceVariant == <V as ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:544:30
    |
544 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>>,
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, V> as ZeroVecLike<V>>::SliceVariant == <V as ZeroMapKV<'a>>::Slice`
    |
note: expected this to be `<V as kv::ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:184:25
    |
184 |     type SliceVariant = ZeroSlice<T>;
    |                         ^^^^^^^^^^^^
    = note: expected associated type `<V as kv::ZeroMapKV<'a>>::Slice`
                        found struct `ZeroSlice<V>`
help: consider constraining the associated type `<V as kv::ZeroMapKV<'a>>::Slice` to `ZeroSlice<V>`
    |
544 |     V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>, Slice = ZeroSlice<V>>,
    |                                                        ++++++++++++++++++++++

error[E0271]: type mismatch resolving `<ZeroVec<'a, P> as MutableZeroVecLike<'a, P>>::OwnedType == <P as ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:337:48
    |
335 |     pub fn cast_zv_k_unchecked<P>(self) -> ZeroMap<'a, P, V>
    |                                - found this type parameter
336 |     where
337 |         P: AsULE<ULE = K::ULE> + ZeroMapKV<'a, Container = ZeroVec<'a, P>>,
    |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, P> as MutableZeroVecLike<'a, P>>::OwnedType == <P as ZeroMapKV<'a>>::OwnedType`
    |
note: expected this to be `<P as kv::ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:290:22
    |
290 |     type OwnedType = T;
    |                      ^
    = note: expected associated type `<P as kv::ZeroMapKV<'a>>::OwnedType`
                found type parameter `P`
help: consider further restricting this bound
    |
337 |         P: AsULE<ULE = K::ULE> + ZeroMapKV<'a, Container = ZeroVec<'a, P>, OwnedType = P>,
    |                                                                          +++++++++++++++

error[E0271]: type mismatch resolving `<ZeroVec<'a, P> as ZeroVecLike<P>>::GetType == <P as ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:337:48
    |
337 |         P: AsULE<ULE = K::ULE> + ZeroMapKV<'a, Container = ZeroVec<'a, P>>,
    |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, P> as ZeroVecLike<P>>::GetType == <P as ZeroMapKV<'a>>::GetType`
    |
note: expected this to be `<P as kv::ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:183:20
    |
183 |     type GetType = T::ULE;
    |                    ^^^^^^
    = note: expected associated type `<P as kv::ZeroMapKV<'a>>::GetType`
               found associated type `<K as ule::AsULE>::ULE`
    = note: an associated type was expected, but a different one was found

error[E0271]: type mismatch resolving `<ZeroVec<'a, P> as ZeroVecLike<P>>::SliceVariant == <P as ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:337:48
    |
337 |         P: AsULE<ULE = K::ULE> + ZeroMapKV<'a, Container = ZeroVec<'a, P>>,
    |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, P> as ZeroVecLike<P>>::SliceVariant == <P as ZeroMapKV<'a>>::Slice`
    |
note: expected this to be `<P as kv::ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:184:25
    |
184 |     type SliceVariant = ZeroSlice<T>;
    |                         ^^^^^^^^^^^^
    = note: expected associated type `<P as kv::ZeroMapKV<'a>>::Slice`
                        found struct `ZeroSlice<P>`
help: consider constraining the associated type `<P as kv::ZeroMapKV<'a>>::Slice` to `ZeroSlice<P>`
    |
337 |         P: AsULE<ULE = K::ULE> + ZeroMapKV<'a, Container = ZeroVec<'a, P>, Slice = ZeroSlice<P>>,
    |                                                                          ++++++++++++++++++++++

error[E0271]: type mismatch resolving `<ZeroVec<'a, P> as MutableZeroVecLike<'a, P>>::OwnedType == <P as ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:357:34
    |
355 |     pub fn try_convert_zv_k_unchecked<P>(self) -> Result<ZeroMap<'a, P, V>, UleError>
    |                                       - found this type parameter
356 |     where
357 |         P: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, P>>,
    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, P> as MutableZeroVecLike<'a, P>>::OwnedType == <P as ZeroMapKV<'a>>::OwnedType`
    |
note: expected this to be `<P as kv::ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:290:22
    |
290 |     type OwnedType = T;
    |                      ^
    = note: expected associated type `<P as kv::ZeroMapKV<'a>>::OwnedType`
                found type parameter `P`
help: consider further restricting this bound
    |
357 |         P: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, P>, OwnedType = P>,
    |                                                            +++++++++++++++

error[E0271]: type mismatch resolving `<ZeroVec<'a, P> as ZeroVecLike<P>>::GetType == <P as ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:357:34
    |
357 |         P: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, P>>,
    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, P> as ZeroVecLike<P>>::GetType == <P as ZeroMapKV<'a>>::GetType`
    |
note: expected this to be `<P as kv::ZeroMapKV<'a>>::GetType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:183:20
    |
183 |     type GetType = T::ULE;
    |                    ^^^^^^
    = note: expected associated type `<P as kv::ZeroMapKV<'a>>::GetType`
               found associated type `<P as ule::AsULE>::ULE`
    = note: an associated type was expected, but a different one was found

error[E0271]: type mismatch resolving `<ZeroVec<'a, P> as ZeroVecLike<P>>::SliceVariant == <P as ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:357:34
    |
357 |         P: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, P>>,
    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, P> as ZeroVecLike<P>>::SliceVariant == <P as ZeroMapKV<'a>>::Slice`
    |
note: expected this to be `<P as kv::ZeroMapKV<'a>>::Slice`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:184:25
    |
184 |     type SliceVariant = ZeroSlice<T>;
    |                         ^^^^^^^^^^^^
    = note: expected associated type `<P as kv::ZeroMapKV<'a>>::Slice`
                        found struct `ZeroSlice<P>`
help: consider constraining the associated type `<P as kv::ZeroMapKV<'a>>::Slice` to `ZeroSlice<P>`
    |
357 |         P: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, P>, Slice = ZeroSlice<P>>,
    |                                                            ++++++++++++++++++++++

error[E0271]: type mismatch resolving `<ZeroVec<'a, P> as MutableZeroVecLike<'a, P>>::OwnedType == <P as ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/map.rs:379:48
    |
377 |     pub fn cast_zv_v_unchecked<P>(self) -> ZeroMap<'a, K, P>
    |                                - found this type parameter
378 |     where
379 |         P: AsULE<ULE = V::ULE> + ZeroMapKV<'a, Container = ZeroVec<'a, P>>,
    |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^ type mismatch resolving `<ZeroVec<'a, P> as MutableZeroVecLike<'a, P>>::OwnedType == <P as ZeroMapKV<'a>>::OwnedType`
    |
note: expected this to be `<P as kv::ZeroMapKV<'a>>::OwnedType`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zerovec-0.11.5/src/map/vecs.rs:290:22
    |
290 |     type OwnedType = T;
    |                      ^

@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 13, 2026

☔ The latest upstream changes (presumably #150844) made this pull request unmergeable. Please resolve the merge conflicts.

region_mapping: FxHashMap<ty::Region<'tcx>, ty::Region<'tcx>>,
const_mapping: FxHashMap<ty::Const<'tcx>, ty::Const<'tcx>>,
}
impl<'tcx> PredicateArgFolder<'tcx> {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how does this folder differ from whatever.instantiate(projection.projection_term.args)? 🤔

Copy link
Contributor Author

@adwinwhite adwinwhite Jan 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This folder additionally maps identity projection alias to the rhs type of the projection: Self::Assoc -> projection.term. It's needed to apply the item bounds on projection.term.

E.g.

trait Trait<T> {
    type Assoc: Bound<T>;
}

fn function<T, U, I>()
where 
    // We need to transform `Self::Assoc: Bound<T>` into `U: Bound<I>`.
    // With instantiating alone, the result would be `T::Assoc: Bound<I>`, which is pointless 
    // as `AliasBound` candidate already covers this.
    T: Trait<I, Assoc = U>
{}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-types Relevant to the types team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants