Skip to content

Conversation

lnicola
Copy link
Member

@lnicola lnicola commented Sep 5, 2025

Subtree update of rust-analyzer to rust-lang/rust-analyzer@a53b444.

Created using https://github.com/rust-lang/josh-sync.

r? @ghost

A4-Tacks and others added 30 commits August 4, 2025 01:59
Example
===
```rust
let x = $0;
```

Old completions:

```rust
let x = if $1 {
    $0
};
```

This PR current completions:

```rust
let x = if $1 {
    $2
} else {
    $0
};
```
…-macro

fix: Correctly goto `From` impl when on `into()` even when the call is inside a macro
…perms

chore: fix crates/ide/src/folding_ranges.rs file perms
This caused rename to remove both, because it couldn't rename the derive-expanded one.

I spent some time trying to create a test for this, before giving up. But I checked manually that this works.
Slim down compile time artifact progress reports
remove `add_attr()` from edit_in_place.rs because it use `ted`.
…lace_named_generic_with_impl

remove `ted` from replace_named_generic_with_impl.rs
…_import

Migrate `expand_glob_import` assist to use `SyntaxEditor`
Add assignment type analysis for ide-completion
fix external docs for exported macros
fix: Do not remove the original token when descending into derives
Remove only contain literals dbg statement

```rust
fn foo() {
    let n = 2;
    $0dbg!(3);
    dbg!(2.6);
    dbg!(1, 2.5);
    dbg!('x');
    dbg!(&n);
    dbg!(n);
    // needless comment
    dbg!("foo");$0
}
```
->
```rust
fn foo() {
    // needless comment
}
```
Old:
```rust
fn foo() {
    3;
    2.6;
    (1, 2.5);
    'x';
    &n;
    n;
    // needless comment
    "foo";
}
```
…e-dbg

Add remove literal dbg stmt for remove_dbg
…lxvvyy

Report the incorrect payload when failing to deserialize lsp messages
…wpkmxw

Fix non-lsp compliant `Response` definition
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.3 to 0.2.4.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](raszi/node-tmp@v0.2.3...v0.2.4)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…ast_instead_of_str

In handlers/extract_module.rs, generate ast::Module instead of String
ChayimFriedman2 and others added 25 commits August 26, 2025 21:46
…lver

perf: Cache trait solving across queries in the same revision
…ated-unsafe-scope

fix: In highlight_related, when on an unsafe block, don't highlight unsafe operations of other unsafe blocks
…attach

fix: Attach the db in one more place in highlighting
Namely, mir lowering, const eval and IDE things.
minor: Don't require a full `InferenceTable` for `CastTy`
…0) to auto traits' substitutions

Chalk represents dyn types as a list of predicate, the self type should be there. The next solver represents them quite differently. The `Self` was forgotten for the auto trait case.
…s-improve

fix: Add progress bars to more places in analysis-stats
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.19 to 0.3.20.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](tokio-rs/tracing@tracing-subscriber-0.3.19...tracing-subscriber-0.3.20)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-version: 0.3.20
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
…acing-subscriber-0.3.20

Bump tracing-subscriber from 0.3.19 to 0.3.20
…-dyn-auto-trait

fix: When mapping next-solver's `dyn` type, add `Self` (aka. bound var ^1.0) to auto traits' substitutions
…get-option

fix: Avoid `--target` option being given twice to `rustc` when invoked through `cargo rustc` while fetching target data layout
…the solver

To the extent possible.

Previously they were confused. Sometimes generic params were treated as `Param` and sometimes as `Placeholder`. A completely redundant (in the new solver) mapping of salsa::Id to ints to intern some info where we could just store it uninterned (not in Chalk though, for some weird reason).

Plus fix a cute bug in closure substitution that was caught by the assertions of Chalk but the next solver did not have such assertions. Do we need more assertions?
Because duplicates can be found with traits. Worse, the inherent methods could be private, and we'll discover that only later. But even if they're not they're different methods, and its seems worthy to present them all to the user.
fix: Deduplicate methods in completion by function ID and not by name
fix: Make sense of the mess that were (are) different kind of generics in the solver
To make it backwards-compatible.
Not sure what exactly fixed it, but why not.
internal: Add a regression test for a fixed new trait solver bug
The main changes are (there are some other small changes):

 - Using a specific type for trait IDs in the new solver, allowing us to simplify a lot of code.
 - Add `BoundConst` similar to `BoundTy` and `BoundRegion` (previously consts used `BoundVar` directly), due to a new trait requirement.
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue. labels Sep 5, 2025
@rustbot
Copy link
Collaborator

rustbot commented Sep 5, 2025

rust-analyzer is developed in its own repository. If possible, consider making this change to rust-lang/rust-analyzer instead.

cc @rust-lang/rust-analyzer

@rust-log-analyzer
Copy link
Collaborator

The job pr-check-2 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] build_script_build test:false 0.287
[RUSTC-TIMING] inotify test:false 0.218
[RUSTC-TIMING] toml test:false 0.346
    Checking cargo-util-schemas v0.8.2
error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:30:25
    |
 30 |     IntUnificationTable(sv::UndoLog<ut::Delegate<IntVid>>),
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`
note: required by a bound in `ena::snapshot_vec::UndoLog`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:32:21
    |
 32 | pub enum UndoLog<D: SnapshotVecDelegate> {
    |                     ^^^^^^^^^^^^^^^^^^^ required by this bound in `UndoLog`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:31:27
    |
 31 |     FloatUnificationTable(sv::UndoLog<ut::Delegate<FloatVid>>),
    |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<FloatVid>` to implement `SnapshotVecDelegate`
note: required by a bound in `ena::snapshot_vec::UndoLog`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:32:21
    |
 32 | pub enum UndoLog<D: SnapshotVecDelegate> {
    |                     ^^^^^^^^^^^^^^^^^^^ required by this bound in `UndoLog`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:41:13
    |
 37 | / macro_rules! impl_from {
 38 | |     ($($ctor:ident ($ty:ty),)*) => {
 39 | |         $(
 40 | |         impl<'db> From<$ty> for UndoLog<'db> {
 41 | |             fn from(x: $ty) -> Self {
    | |             ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
...   |
 47 | | }
    | |_- in this expansion of `impl_from!`
...
 50 | / impl_from! {
 51 | |     RegionConstraintCollector(region_constraints::UndoLog<'db>),
 52 | |
 53 | |     TypeVariables(sv::UndoLog<ut::Delegate<type_variable::TyVidEqKey<'db>>>),
...   |
 59 | |     RegionUnificationTable(sv::UndoLog<ut::Delegate<RegionVidKey<'db>>>),
 60 | | }
    | |_- in this macro invocation
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`
note: required by a bound in `ena::snapshot_vec::UndoLog`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:32:21
    |
 32 | pub enum UndoLog<D: SnapshotVecDelegate> {
    |                     ^^^^^^^^^^^^^^^^^^^ required by this bound in `UndoLog`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:40:19
    |
 37 | / macro_rules! impl_from {
 38 | |     ($($ctor:ident ($ty:ty),)*) => {
 39 | |         $(
 40 | |         impl<'db> From<$ty> for UndoLog<'db> {
    | |                   ^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
...   |
 47 | | }
    | |_- in this expansion of `impl_from!`
...
 50 | / impl_from! {
 51 | |     RegionConstraintCollector(region_constraints::UndoLog<'db>),
 52 | |
 53 | |     TypeVariables(sv::UndoLog<ut::Delegate<type_variable::TyVidEqKey<'db>>>),
...   |
 59 | |     RegionUnificationTable(sv::UndoLog<ut::Delegate<RegionVidKey<'db>>>),
 60 | | }
    | |_- in this macro invocation
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`
note: required by a bound in `ena::snapshot_vec::UndoLog`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:32:21
    |
 32 | pub enum UndoLog<D: SnapshotVecDelegate> {
    |                     ^^^^^^^^^^^^^^^^^^^ required by this bound in `UndoLog`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:41:13
    |
 37 | / macro_rules! impl_from {
 38 | |     ($($ctor:ident ($ty:ty),)*) => {
 39 | |         $(
 40 | |         impl<'db> From<$ty> for UndoLog<'db> {
 41 | |             fn from(x: $ty) -> Self {
    | |             ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
...   |
 47 | | }
    | |_- in this expansion of `impl_from!`
...
 50 | / impl_from! {
 51 | |     RegionConstraintCollector(region_constraints::UndoLog<'db>),
 52 | |
 53 | |     TypeVariables(sv::UndoLog<ut::Delegate<type_variable::TyVidEqKey<'db>>>),
...   |
 59 | |     RegionUnificationTable(sv::UndoLog<ut::Delegate<RegionVidKey<'db>>>),
 60 | | }
    | |_- in this macro invocation
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<FloatVid>` to implement `SnapshotVecDelegate`
note: required by a bound in `ena::snapshot_vec::UndoLog`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:32:21
    |
 32 | pub enum UndoLog<D: SnapshotVecDelegate> {
    |                     ^^^^^^^^^^^^^^^^^^^ required by this bound in `UndoLog`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:40:19
    |
 37 | / macro_rules! impl_from {
 38 | |     ($($ctor:ident ($ty:ty),)*) => {
 39 | |         $(
 40 | |         impl<'db> From<$ty> for UndoLog<'db> {
    | |                   ^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
...   |
 47 | | }
    | |_- in this expansion of `impl_from!`
...
 50 | / impl_from! {
 51 | |     RegionConstraintCollector(region_constraints::UndoLog<'db>),
 52 | |
 53 | |     TypeVariables(sv::UndoLog<ut::Delegate<type_variable::TyVidEqKey<'db>>>),
...   |
 59 | |     RegionUnificationTable(sv::UndoLog<ut::Delegate<RegionVidKey<'db>>>),
 60 | | }
    | |_- in this macro invocation
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<FloatVid>` to implement `SnapshotVecDelegate`
note: required by a bound in `ena::snapshot_vec::UndoLog`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:32:21
    |
 32 | pub enum UndoLog<D: SnapshotVecDelegate> {
    |                     ^^^^^^^^^^^^^^^^^^^ required by this bound in `UndoLog`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/mod.rs:101:41
    |
101 |     pub(crate) int_unification_storage: ut::UnificationTableStorage<IntVid>,
    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/mod.rs:104:43
    |
104 |     pub(crate) float_unification_storage: ut::UnificationTableStorage<FloatVid>,
    |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:54:25
    |
 54 |     IntUnificationTable(sv::UndoLog<ut::Delegate<IntVid>>),
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`
note: required by a bound in `ena::snapshot_vec::UndoLog`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:32:21
    |
 32 | pub enum UndoLog<D: SnapshotVecDelegate> {
    |                     ^^^^^^^^^^^^^^^^^^^ required by this bound in `UndoLog`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:55:27
    |
 55 |     FloatUnificationTable(sv::UndoLog<ut::Delegate<FloatVid>>),
    |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
---
   |
32 |         let cached = WithCachedTypeInfo {
   |                      ^^^^^^^^^^^^^^^^^^ missing `stable_hash`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:105:39
    |
105 | ...                   inner.int_unification_table().probe_value(vid),
    |                             ^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

error[E0599]: the method `probe_value` exists for struct `UnificationTable<InPlace<IntVid, &mut Vec<VarValue<IntVid>>, ...>>`, but its trait bounds were not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:105:63
    |
105 |   ...                   inner.int_unification_table().probe_value(vid),
    |                                                       ^^^^^^^^^^^ method cannot be called due to unsatisfied trait bounds
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:56:1
    |
 56 | / pub struct InPlace<
 57 | |     K: UnifyKey,
 58 | |     V: sv::VecLike<Delegate<K>> = Vec<VarValue<K>>,
 59 | |     L = VecLog<sv::UndoLog<Delegate<K>>>,
 60 | | > {
    | |_- doesn't satisfy `<_ as UnificationStoreBase>::Key = IntVid`
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- doesn't satisfy `IntVid: ena::unify::UnifyKey`
    |
    = note: the following trait bounds were not satisfied:
            `IntVid: ena::unify::UnifyKey`
            `IntVid: ena::unify::UnifyKey`
            which is required by `<InPlace<IntVid, &mut Vec<VarValue<IntVid>>, &mut InferCtxtUndoLogs<'_>> as UnificationStoreBase>::Key = IntVid`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:107:46
    |
107 | ...                   if inner.int_unification_table().find(vid) == vid
    |                                ^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

[RUSTC-TIMING] notify test:false 0.236
error[E0599]: the method `find` exists for struct `UnificationTable<InPlace<IntVid, &mut Vec<VarValue<IntVid>>, ...>>`, but its trait bounds were not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:107:70
    |
107 |   ...                   if inner.int_unification_table().find(vid) == vid
    |                                                          ^^^^ method cannot be called due to unsatisfied trait bounds
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:56:1
    |
 56 | / pub struct InPlace<
 57 | |     K: UnifyKey,
 58 | |     V: sv::VecLike<Delegate<K>> = Vec<VarValue<K>>,
 59 | |     L = VecLog<sv::UndoLog<Delegate<K>>>,
 60 | | > {
    | |_- doesn't satisfy `<_ as UnificationStoreBase>::Key = IntVid`
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- doesn't satisfy `IntVid: ena::unify::UnifyKey`
    |
    = note: the following trait bounds were not satisfied:
            `IntVid: ena::unify::UnifyKey`
            `IntVid: ena::unify::UnifyKey`
            which is required by `<InPlace<IntVid, &mut Vec<VarValue<IntVid>>, &mut InferCtxtUndoLogs<'_>> as UnificationStoreBase>::Key = IntVid`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:113:39
    |
113 | ...                   inner.float_unification_table().probe_value(vid),
    |                             ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

error[E0599]: the method `probe_value` exists for struct `UnificationTable<InPlace<FloatVid, &mut Vec<VarValue<FloatVid>>, ...>>`, but its trait bounds were not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:113:65
    |
113 |   ...                   inner.float_unification_table().probe_value(vid),
    |                                                         ^^^^^^^^^^^ method cannot be called due to unsatisfied trait bounds
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:56:1
    |
 56 | / pub struct InPlace<
 57 | |     K: UnifyKey,
 58 | |     V: sv::VecLike<Delegate<K>> = Vec<VarValue<K>>,
 59 | |     L = VecLog<sv::UndoLog<Delegate<K>>>,
 60 | | > {
    | |_- doesn't satisfy `<_ as UnificationStoreBase>::Key = FloatVid`
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- doesn't satisfy `FloatVid: ena::unify::UnifyKey`
    |
    = note: the following trait bounds were not satisfied:
            `FloatVid: ena::unify::UnifyKey`
            `FloatVid: ena::unify::UnifyKey`
            which is required by `<InPlace<FloatVid, &mut Vec<VarValue<FloatVid>>, &mut InferCtxtUndoLogs<'_>> as UnificationStoreBase>::Key = FloatVid`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:115:46
    |
115 | ...                   if inner.float_unification_table().find(vid) == vid
    |                                ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

error[E0599]: the method `find` exists for struct `UnificationTable<InPlace<FloatVid, &mut Vec<VarValue<FloatVid>>, ...>>`, but its trait bounds were not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:115:72
    |
115 |   ...                   if inner.float_unification_table().find(vid) == vid
    |                                                            ^^^^ method cannot be called due to unsatisfied trait bounds
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:56:1
    |
 56 | / pub struct InPlace<
 57 | |     K: UnifyKey,
 58 | |     V: sv::VecLike<Delegate<K>> = Vec<VarValue<K>>,
 59 | |     L = VecLog<sv::UndoLog<Delegate<K>>>,
 60 | | > {
    | |_- doesn't satisfy `<_ as UnificationStoreBase>::Key = FloatVid`
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- doesn't satisfy `FloatVid: ena::unify::UnifyKey`
    |
    = note: the following trait bounds were not satisfied:
            `FloatVid: ena::unify::UnifyKey`
            `FloatVid: ena::unify::UnifyKey`
            which is required by `<InPlace<FloatVid, &mut Vec<VarValue<FloatVid>>, &mut InferCtxtUndoLogs<'_>> as UnificationStoreBase>::Key = FloatVid`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:177:33
    |
177 |         self.inner.borrow_mut().int_unification_table().union(a, b);
    |                                 ^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

error[E0599]: the method `union` exists for struct `UnificationTable<InPlace<IntVid, &mut Vec<VarValue<IntVid>>, ...>>`, but its trait bounds were not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:177:57
    |
177 |           self.inner.borrow_mut().int_unification_table().union(a, b);
    |                                                           ^^^^^ method cannot be called due to unsatisfied trait bounds
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:56:1
    |
 56 | / pub struct InPlace<
 57 | |     K: UnifyKey,
 58 | |     V: sv::VecLike<Delegate<K>> = Vec<VarValue<K>>,
 59 | |     L = VecLog<sv::UndoLog<Delegate<K>>>,
 60 | | > {
    | |_- doesn't satisfy `<_ as UnificationStoreBase>::Key = IntVid`
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- doesn't satisfy `IntVid: ena::unify::UnifyKey`
    |
    = note: the following trait bounds were not satisfied:
            `IntVid: ena::unify::UnifyKey`
            `IntVid: ena::unify::UnifyKey`
            which is required by `<InPlace<IntVid, &mut Vec<VarValue<IntVid>>, &mut InferCtxtUndoLogs<'_>> as UnificationStoreBase>::Key = IntVid`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:181:33
    |
181 |         self.inner.borrow_mut().float_unification_table().union(a, b);
    |                                 ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

error[E0599]: the method `union` exists for struct `UnificationTable<InPlace<FloatVid, &mut Vec<VarValue<FloatVid>>, ...>>`, but its trait bounds were not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:181:59
    |
181 |           self.inner.borrow_mut().float_unification_table().union(a, b);
    |                                                             ^^^^^ method cannot be called due to unsatisfied trait bounds
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:56:1
    |
 56 | / pub struct InPlace<
 57 | |     K: UnifyKey,
 58 | |     V: sv::VecLike<Delegate<K>> = Vec<VarValue<K>>,
 59 | |     L = VecLog<sv::UndoLog<Delegate<K>>>,
 60 | | > {
    | |_- doesn't satisfy `<_ as UnificationStoreBase>::Key = FloatVid`
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- doesn't satisfy `FloatVid: ena::unify::UnifyKey`
    |
    = note: the following trait bounds were not satisfied:
            `FloatVid: ena::unify::UnifyKey`
            `FloatVid: ena::unify::UnifyKey`
            which is required by `<InPlace<FloatVid, &mut Vec<VarValue<FloatVid>>, &mut InferCtxtUndoLogs<'_>> as UnificationStoreBase>::Key = FloatVid`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:210:33
    |
210 |         self.inner.borrow_mut().int_unification_table().union_value(vid, value);
    |                                 ^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
---
    |
183 |             Ok(PlaceholderReplacer::replace_placeholders(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
note: expected `IndexMap<Placeholder<...>, ..., ...>`, found a different `IndexMap<Placeholder<...>, ..., ...>`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/project/solve_normalize.rs:185:17
    |
185 |                 mapped_regions,
    |                 ^^^^^^^^^^^^^^
note: two different versions of crate `indexmap` are being used; two types coming from two different versions of the same crate are different types even if they look the same
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.9.0/src/map.rs:87:1
    |
 87 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected type `IndexMap`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.10.0/src/map.rs:88:1
    |
 88 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the found type `indexmap::map::IndexMap`
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer.rs:50:5
    |
 50 | use indexmap::IndexSet;
    |     -------- one version of crate `indexmap` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:7:1
    |
  7 | extern crate rustc_index;
    | ------------------------- one version of crate `indexmap` used here, as a dependency of crate `rustc_serialize`
    = help: you can use `cargo tree` to explore your dependency tree
note: expected `IndexMap<Placeholder<BoundTy>, ..., ...>`, found a different `IndexMap<Placeholder<BoundTy>, ..., ...>`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/project/solve_normalize.rs:186:17
    |
186 |                 mapped_types,
    |                 ^^^^^^^^^^^^
note: two different versions of crate `indexmap` are being used; two types coming from two different versions of the same crate are different types even if they look the same
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.9.0/src/map.rs:87:1
    |
 87 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected type `IndexMap`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.10.0/src/map.rs:88:1
    |
 88 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the found type `indexmap::map::IndexMap`
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer.rs:50:5
    |
 50 | use indexmap::IndexSet;
    |     -------- one version of crate `indexmap` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:7:1
    |
  7 | extern crate rustc_index;
    | ------------------------- one version of crate `indexmap` used here, as a dependency of crate `rustc_serialize`
    = help: you can use `cargo tree` to explore your dependency tree
note: expected `IndexMap<Placeholder<...>, ..., ...>`, found a different `IndexMap<Placeholder<...>, ..., ...>`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/project/solve_normalize.rs:187:17
    |
187 |                 mapped_consts,
    |                 ^^^^^^^^^^^^^
note: two different versions of crate `indexmap` are being used; two types coming from two different versions of the same crate are different types even if they look the same
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.9.0/src/map.rs:87:1
    |
 87 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected type `IndexMap`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.10.0/src/map.rs:88:1
    |
 88 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the found type `indexmap::map::IndexMap`
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer.rs:50:5
    |
 50 | use indexmap::IndexSet;
    |     -------- one version of crate `indexmap` used here, as a direct dependency of the current crate
---
    = help: you can use `cargo tree` to explore your dependency tree
note: associated function defined here
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/util.rs:864:12
    |
864 |     pub fn replace_placeholders<T: TypeFoldable<DbInterner<'db>>>(
    |            ^^^^^^^^^^^^^^^^^^^^
865 |         infcx: &'a InferCtxt<'db>,
866 |         mapped_regions: FxIndexMap<PlaceholderRegion, BoundRegion>,
    |         ----------------------------------------------------------
867 |         mapped_types: FxIndexMap<Placeholder<BoundTy>, BoundTy>,
    |         -------------------------------------------------------
868 |         mapped_consts: FxIndexMap<PlaceholderConst, BoundConst>,
    |         -------------------------------------------------------

error[E0308]: arguments to this function are incorrect
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/project/solve_normalize.rs:210:16
    |
210 |             Ok(PlaceholderReplacer::replace_placeholders(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
note: expected `IndexMap<Placeholder<...>, ..., ...>`, found a different `IndexMap<Placeholder<...>, ..., ...>`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/project/solve_normalize.rs:212:17
    |
212 |                 mapped_regions,
    |                 ^^^^^^^^^^^^^^
note: two different versions of crate `indexmap` are being used; two types coming from two different versions of the same crate are different types even if they look the same
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.9.0/src/map.rs:87:1
    |
 87 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected type `IndexMap`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.10.0/src/map.rs:88:1
    |
 88 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the found type `indexmap::map::IndexMap`
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer.rs:50:5
    |
 50 | use indexmap::IndexSet;
    |     -------- one version of crate `indexmap` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:7:1
    |
  7 | extern crate rustc_index;
    | ------------------------- one version of crate `indexmap` used here, as a dependency of crate `rustc_serialize`
    = help: you can use `cargo tree` to explore your dependency tree
note: expected `IndexMap<Placeholder<BoundTy>, ..., ...>`, found a different `IndexMap<Placeholder<BoundTy>, ..., ...>`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/project/solve_normalize.rs:213:17
    |
213 |                 mapped_types,
    |                 ^^^^^^^^^^^^
note: two different versions of crate `indexmap` are being used; two types coming from two different versions of the same crate are different types even if they look the same
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.9.0/src/map.rs:87:1
    |
 87 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected type `IndexMap`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.10.0/src/map.rs:88:1
    |
 88 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the found type `indexmap::map::IndexMap`
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer.rs:50:5
    |
 50 | use indexmap::IndexSet;
    |     -------- one version of crate `indexmap` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:7:1
    |
  7 | extern crate rustc_index;
    | ------------------------- one version of crate `indexmap` used here, as a dependency of crate `rustc_serialize`
    = help: you can use `cargo tree` to explore your dependency tree
note: expected `IndexMap<Placeholder<...>, ..., ...>`, found a different `IndexMap<Placeholder<...>, ..., ...>`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/project/solve_normalize.rs:214:17
    |
214 |                 mapped_consts,
    |                 ^^^^^^^^^^^^^
note: two different versions of crate `indexmap` are being used; two types coming from two different versions of the same crate are different types even if they look the same
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.9.0/src/map.rs:87:1
    |
 87 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected type `IndexMap`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.10.0/src/map.rs:88:1
    |
 88 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the found type `indexmap::map::IndexMap`
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer.rs:50:5
    |
 50 | use indexmap::IndexSet;
    |     -------- one version of crate `indexmap` used here, as a direct dependency of the current crate
---
    = help: you can use `cargo tree` to explore your dependency tree
note: associated function defined here
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/util.rs:864:12
    |
864 |     pub fn replace_placeholders<T: TypeFoldable<DbInterner<'db>>>(
    |            ^^^^^^^^^^^^^^^^^^^^
865 |         infcx: &'a InferCtxt<'db>,
866 |         mapped_regions: FxIndexMap<PlaceholderRegion, BoundRegion>,
    |         ----------------------------------------------------------
867 |         mapped_types: FxIndexMap<Placeholder<BoundTy>, BoundTy>,
    |         -------------------------------------------------------
868 |         mapped_consts: FxIndexMap<PlaceholderConst, BoundConst>,
    |         -------------------------------------------------------

[RUSTC-TIMING] indexmap test:false 0.605
error[E0063]: missing field `stable_hash` in initializer of `WithCachedTypeInfo<_>`
  --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/ty.rs:52:22
---
[RUSTC-TIMING] ordered_float test:false 0.214
[RUSTC-TIMING] winnow test:false 1.790
[RUSTC-TIMING] erased_serde test:false 0.510
    Checking project-model v0.0.0 (/checkout/src/tools/rust-analyzer/crates/project-model)
error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/at.rs:72:27
    |
 72 |     pub fn fork(&self) -> Self {
    |                           ^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/at.rs:76:20
    |
 76 |             inner: self.inner.clone(),
    |                    ^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/at.rs:85:86
    |
 85 |     pub fn fork_with_typing_mode(&self, typing_mode: TypingMode<DbInterner<'db>>) -> Self {
    |                                                                                      ^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/at.rs:92:20
    |
 92 |             inner: self.inner.clone(),
    |                    ^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/opaque_types/table.rs:154:32
    |
154 |             self.undo_log.push(UndoLog::OpaqueTypes(key, Some(prev)));
    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/opaque_types/table.rs:158:28
    |
158 |         self.undo_log.push(UndoLog::OpaqueTypes(key, None));
    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/opaque_types/table.rs:164:28
    |
164 |         self.undo_log.push(UndoLog::DuplicateOpaqueType);
    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:41:32
    |
 37 | / macro_rules! impl_from {
 38 | |     ($($ctor:ident ($ty:ty),)*) => {
 39 | |         $(
 40 | |         impl<'db> From<$ty> for UndoLog<'db> {
 41 | |             fn from(x: $ty) -> Self {
    | |                                ^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
...   |
 47 | | }
    | |_- in this expansion of `impl_from!`
...
 50 | / impl_from! {
 51 | |     RegionConstraintCollector(region_constraints::UndoLog<'db>),
 52 | |
 53 | |     TypeVariables(sv::UndoLog<ut::Delegate<type_variable::TyVidEqKey<'db>>>),
...   |
 59 | |     RegionUnificationTable(sv::UndoLog<ut::Delegate<RegionVidKey<'db>>>),
 60 | | }
    | |_- in this macro invocation
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:87:10
    |
 87 | #[derive(Clone, Default)]
    |          ^^^^^
    |          |
    |          the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |          in this derive macro expansion
   --> /rustc/788da80fcfcef3f34c90def5baa32813e39a1a41/library/core/src/clone.rs:225:1
    |
    = note: in this expansion of `#[derive(Clone)]`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:89:5
    |
 87 | #[derive(Clone, Default)]
    |          ----- in this derive macro expansion
 88 | pub(crate) struct InferCtxtUndoLogs<'db> {
 89 |     logs: Vec<UndoLog<'db>>,
    |     ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
   --> /rustc/788da80fcfcef3f34c90def5baa32813e39a1a41/library/core/src/clone.rs:225:1
    |
    = note: in this expansion of `#[derive(Clone)]`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:87:17
    |
 87 | #[derive(Clone, Default)]
    |                 ^^^^^^^
    |                 |
    |                 the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |                 in this derive macro expansion
   --> /rustc/788da80fcfcef3f34c90def5baa32813e39a1a41/library/core/src/default.rs:147:1
    |
    = note: in this expansion of `#[derive(Default)]`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:89:5
    |
 87 | #[derive(Clone, Default)]
    |                 ------- in this derive macro expansion
 88 | pub(crate) struct InferCtxtUndoLogs<'db> {
 89 |     logs: Vec<UndoLog<'db>>,
    |     ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
   --> /rustc/788da80fcfcef3f34c90def5baa32813e39a1a41/library/core/src/default.rs:147:1
    |
    = note: in this expansion of `#[derive(Default)]`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;

@lnicola
Copy link
Member Author

lnicola commented Sep 5, 2025

note: there are multiple different versions of crate ena in the dependency graph

They're all 0.14.3 😕.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.