Closed
Description
auto-reduced (treereduce-rust):
use core::marker::PhantomData;
pub trait ContainsKey<const K: &'static str> {}
pub trait KeySchema {}
pub struct KeyNil;
impl KeySchema for KeyNil {}
pub struct KeyCons<Tail, const KEY_ID: &'static str> {}
pub trait SubsetExcept<Parent: KeySchema>: KeySchema {}
impl<Schema, PossibleParent, const K: &'static str> SubsetExcept<PossibleParent, K> for Schema
where
Schema: KeySchema,
(): KeySchema,
Self: ContainsKey<K>,
[(); PossibleParent::SIZE - Schema::SIZE]: Sized,
[(); check_valid_subset::<(), Schema, K>()]: Sized,
{
}
impl<Tail> ContainsKey<K> for KeyCons<Tail, KEY_ID> {}
pub struct RestrictedStringMap<S: KeySchema> {
_schema: PhantomData<S>,
}
impl<S: KeySchema> RestrictedStringMap<S> {
pub fn empty_schema() -> RestrictedStringMap<KeyNil> {}
//
pub fn remove_key<NewSchema: KeySchema>(self) -> RestrictedStringMap<NewSchema>
where
Self:,
S:,
NewSchema: SubsetExcept<S, K>,
[(); S::SIZE - NewSchema::SIZE]: Sized,
{
}
}
fn foo() {
let map: RestrictedStringMap<KeyNil> = RestrictedStringMap::<KeyNil>::empty_schema();
let map: RestrictedStringMap<KeyCons<KeyNil, "k1">> = map.remove_key::<_, "k2">();
}
original code
original:
use core::marker::PhantomData;
pub trait ContainsKey<const K: &'static str> {}
pub trait KeySchema {}
pub struct KeyNil;
impl KeySchema for KeyNil {}
pub struct KeyCons<Tail, const KEY_ID: &'static str> {}
pub trait SubsetExcept<Parent: KeySchema>: KeySchema {}
impl<Schema, PossibleParent, const K: &'static str> SubsetExcept<PossibleParent, K> for Schema
where
Schema: KeySchema,
(): KeySchema,
Self: ContainsKey<K>,
[(); PossibleParent::SIZE - Schema::SIZE]: Sized,
[(); check_valid_subset::<(), Schema, K>()]: Sized,
{
}
impl<Tail, const KEY_ID: &'static str> ContainsKey<K> for KeyCons<Tail, KEY_ID> {}
pub struct RestrictedStringMap<S: KeySchema> {
_schema: PhantomData<S>,
}
impl<S: KeySchema> RestrictedStringMap<S> {
pub fn empty_schema() -> RestrictedStringMap<KeyNil> {}
//
pub fn remove_key<NewSchema: KeySchema>(self) -> RestrictedStringMap<NewSchema>
where
Self:,
S:,
NewSchema: SubsetExcept<S, K>,
[(); S::SIZE - NewSchema::SIZE]: Sized,
{
}
}
fn foo() {
let map: RestrictedStringMap<KeyNil> = RestrictedStringMap::<KeyNil>::empty_schema();
let map: RestrictedStringMap<KeyCons<KeyNil, "k1">> = map.remove_key::<_, "k2">();
}
Version information
rustc 1.79.0-nightly (a77322c16 2024-04-02)
binary: rustc
commit-hash: a77322c16f188402fa22a5e87100acce42433cbc
commit-date: 2024-04-02
host: x86_64-unknown-linux-gnu
release: 1.79.0-nightly
LLVM version: 18.1.2
Command:
/home/matthias/.rustup/toolchains/master/bin/rustc --edition=2021
Program output
error: generic parameters may not be used in const operations
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:19:10
|
19 | [(); PossibleParent::SIZE - Schema::SIZE]: Sized,
| ^^^^^^^^^^^^^^^^^^^^ cannot perform const operation using `PossibleParent`
|
= note: type parameters may not be used in const expressions
= help: add `#![feature(generic_const_exprs)]` to allow generic const expressions
error: generic parameters may not be used in const operations
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:19:33
|
19 | [(); PossibleParent::SIZE - Schema::SIZE]: Sized,
| ^^^^^^^^^^^^ cannot perform const operation using `Schema`
|
= note: type parameters may not be used in const expressions
= help: add `#![feature(generic_const_exprs)]` to allow generic const expressions
error: generic parameters may not be used in const operations
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:20:35
|
20 | [(); check_valid_subset::<(), Schema, K>()]: Sized,
| ^^^^^^ cannot perform const operation using `Schema`
|
= note: type parameters may not be used in const expressions
= help: add `#![feature(generic_const_exprs)]` to allow generic const expressions
error: generic parameters may not be used in const operations
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:20:43
|
20 | [(); check_valid_subset::<(), Schema, K>()]: Sized,
| ^ cannot perform const operation using `K`
|
= help: const parameters may only be used as standalone arguments, i.e. `K`
= help: add `#![feature(generic_const_exprs)]` to allow generic const expressions
error: generic parameters may not be used in const operations
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:39:14
|
39 | [(); S::SIZE - NewSchema::SIZE]: Sized,
| ^^^^^^^ cannot perform const operation using `S`
|
= note: type parameters may not be used in const expressions
= help: add `#![feature(generic_const_exprs)]` to allow generic const expressions
error: generic parameters may not be used in const operations
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:39:24
|
39 | [(); S::SIZE - NewSchema::SIZE]: Sized,
| ^^^^^^^^^^^^^^^ cannot perform const operation using `NewSchema`
|
= note: type parameters may not be used in const expressions
= help: add `#![feature(generic_const_exprs)]` to allow generic const expressions
error[E0412]: cannot find type `K` in this scope
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:24:24
|
24 | impl<Tail> ContainsKey<K> for KeyCons<Tail, KEY_ID> {}
| ^ not found in this scope
|
help: you might be missing a type parameter
|
24 | impl<Tail, K> ContainsKey<K> for KeyCons<Tail, KEY_ID> {}
| +++
error[E0412]: cannot find type `KEY_ID` in this scope
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:24:45
|
24 | impl<Tail> ContainsKey<K> for KeyCons<Tail, KEY_ID> {}
| ^^^^^^ not found in this scope
|
help: you might be missing a type parameter
|
24 | impl<Tail, KEY_ID> ContainsKey<K> for KeyCons<Tail, KEY_ID> {}
| ++++++++
error[E0412]: cannot find type `K` in this scope
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:38:36
|
30 | impl<S: KeySchema> RestrictedStringMap<S> {
| - similarly named type parameter `S` defined here
...
38 | NewSchema: SubsetExcept<S, K>,
| ^
|
help: a type parameter with a similar name exists
|
38 | NewSchema: SubsetExcept<S, S>,
| ~
help: you might be missing a type parameter
|
30 | impl<S: KeySchema, K> RestrictedStringMap<S> {
| +++
error[E0601]: `main` function not found in crate `mvce`
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:48:2
|
48 | }
| ^ consider adding a `main` function to `/tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs`
error[E0747]: unresolved item provided when a constant was expected
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:24:45
|
24 | impl<Tail> ContainsKey<K> for KeyCons<Tail, KEY_ID> {}
| ^^^^^^
|
help: if this generic argument was intended as a const parameter, surround it with braces
|
24 | impl<Tail> ContainsKey<K> for KeyCons<Tail, { KEY_ID }> {}
| + +
error: `&'static str` is forbidden as the type of a const generic parameter
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:3:32
|
3 | pub trait ContainsKey<const K: &'static str> {}
| ^^^^^^^^^^^^
|
= note: the only supported types are integers, `bool` and `char`
help: add `#![feature(adt_const_params)]` to the crate attributes to enable more complex and user defined types
|
1 + #![feature(adt_const_params)]
|
error[E0392]: type parameter `Tail` is never used
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:10:20
|
10 | pub struct KeyCons<Tail, const KEY_ID: &'static str> {}
| ^^^^ unused type parameter
|
= help: consider removing `Tail`, referring to it in a field, or using a marker such as `PhantomData`
= help: if you intended `Tail` to be a const parameter, use `const Tail: /* Type */` instead
error: `&'static str` is forbidden as the type of a const generic parameter
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:10:40
|
10 | pub struct KeyCons<Tail, const KEY_ID: &'static str> {}
| ^^^^^^^^^^^^
|
= note: the only supported types are integers, `bool` and `char`
help: add `#![feature(adt_const_params)]` to the crate attributes to enable more complex and user defined types
|
1 + #![feature(adt_const_params)]
|
error[E0107]: trait takes 1 generic argument but 2 generic arguments were supplied
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:14:53
|
14 | impl<Schema, PossibleParent, const K: &'static str> SubsetExcept<PossibleParent, K> for Schema
| ^^^^^^^^^^^^ - help: remove this generic argument
| |
| expected 1 generic argument
|
note: trait defined here, with 1 generic parameter: `Parent`
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:12:11
|
12 | pub trait SubsetExcept<Parent: KeySchema>: KeySchema {}
| ^^^^^^^^^^^^ ------
error[E0425]: cannot find function `check_valid_subset` in this scope
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:20:10
|
20 | [(); check_valid_subset::<(), Schema, K>()]: Sized,
| ^^^^^^^^^^^^^^^^^^ not found in this scope
error[E0207]: the const parameter `K` is not constrained by the impl trait, self type, or predicates
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:14:30
|
14 | impl<Schema, PossibleParent, const K: &'static str> SubsetExcept<PossibleParent, K> for Schema
| ^^^^^^^^^^^^^^^^^^^^^ unconstrained const parameter
|
= note: expressions using a const parameter must map each value to a distinct output value
= note: proving the result of expressions other than the parameter are unique is not supported
error: `&'static str` is forbidden as the type of a const generic parameter
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:14:39
|
14 | impl<Schema, PossibleParent, const K: &'static str> SubsetExcept<PossibleParent, K> for Schema
| ^^^^^^^^^^^^
|
= note: the only supported types are integers, `bool` and `char`
help: add `#![feature(adt_const_params)]` to the crate attributes to enable more complex and user defined types
|
1 + #![feature(adt_const_params)]
|
error[E0747]: unresolved item provided when a constant was expected
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:24:24
|
24 | impl<Tail> ContainsKey<K> for KeyCons<Tail, KEY_ID> {}
| ^
|
help: if this generic argument was intended as a const parameter, surround it with braces
|
24 | impl<Tail> ContainsKey<{ K }> for KeyCons<Tail, KEY_ID> {}
| + +
error[E0107]: trait takes 1 generic argument but 2 generic arguments were supplied
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:38:20
|
38 | NewSchema: SubsetExcept<S, K>,
| ^^^^^^^^^^^^ - help: remove this generic argument
| |
| expected 1 generic argument
|
note: trait defined here, with 1 generic parameter: `Parent`
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:12:11
|
12 | pub trait SubsetExcept<Parent: KeySchema>: KeySchema {}
| ^^^^^^^^^^^^ ------
error[E0308]: mismatched types
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:31:30
|
31 | pub fn empty_schema() -> RestrictedStringMap<KeyNil> {}
| ------------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `RestrictedStringMap<KeyNil>`, found `()`
| |
| implicitly returns `()` as its body has no tail or `return` expression
|
= note: expected struct `RestrictedStringMap<KeyNil>`
found unit type `()`
error[E0308]: mismatched types
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:34:54
|
34 | pub fn remove_key<NewSchema: KeySchema>(self) -> RestrictedStringMap<NewSchema>
| ---------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `RestrictedStringMap<NewSchema>`, found `()`
| |
| implicitly returns `()` as its body has no tail or `return` expression
|
= note: expected struct `RestrictedStringMap<NewSchema>`
found unit type `()`
error[E0277]: the trait bound `KeyCons<KeyNil, "k1">: KeySchema` is not satisfied
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:47:14
|
47 | let map: RestrictedStringMap<KeyCons<KeyNil, "k1">> = map.remove_key::<_, "k2">();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `KeySchema` is not implemented for `KeyCons<KeyNil, "k1">`
|
= help: the trait `KeySchema` is implemented for `KeyNil`
note: required by a bound in `RestrictedStringMap`
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:26:35
|
26 | pub struct RestrictedStringMap<S: KeySchema> {
| ^^^^^^^^^ required by this bound in `RestrictedStringMap`
error[E0107]: method takes 1 generic argument but 2 generic arguments were supplied
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:47:63
|
47 | let map: RestrictedStringMap<KeyCons<KeyNil, "k1">> = map.remove_key::<_, "k2">();
| ^^^^^^^^^^ ---- help: remove this generic argument
| |
| expected 1 generic argument
|
note: method defined here, with 1 generic parameter: `NewSchema`
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:34:12
|
34 | pub fn remove_key<NewSchema: KeySchema>(self) -> RestrictedStringMap<NewSchema>
| ^^^^^^^^^^ ---------
error[E0277]: the trait bound `KeyCons<KeyNil, "k1">: KeySchema` is not satisfied
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:47:76
|
47 | let map: RestrictedStringMap<KeyCons<KeyNil, "k1">> = map.remove_key::<_, "k2">();
| ---------- ^ the trait `KeySchema` is not implemented for `KeyCons<KeyNil, "k1">`
| |
| required by a bound introduced by this call
|
= help: the trait `KeySchema` is implemented for `KeyNil`
note: required by a bound in `RestrictedStringMap::<S>::remove_key`
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:34:34
|
34 | pub fn remove_key<NewSchema: KeySchema>(self) -> RestrictedStringMap<NewSchema>
| ^^^^^^^^^ required by this bound in `RestrictedStringMap::<S>::remove_key`
error[E0277]: the trait bound `(): KeySchema` is not satisfied
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:47:76
|
47 | let map: RestrictedStringMap<KeyCons<KeyNil, "k1">> = map.remove_key::<_, "k2">();
| ---------- ^ the trait `KeySchema` is not implemented for `()`, which is required by `KeyCons<KeyNil, "k1">: SubsetExcept<KeyNil>`
| |
| required by a bound introduced by this call
|
= help: the trait `KeySchema` is implemented for `KeyNil`
note: required for `KeyCons<KeyNil, "k1">` to implement `SubsetExcept<KeyNil>`
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:14:53
|
14 | impl<Schema, PossibleParent, const K: &'static str> SubsetExcept<PossibleParent, K> for Schema
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^
...
17 | (): KeySchema,
| --------- unsatisfied trait bound introduced here
note: required by a bound in `RestrictedStringMap::<S>::remove_key`
--> /tmp/icemaker_global_tempdir.bEGplEUcAUNn/rustc_testrunner_tmpdir_reporting.f6LvrftWRmom/mvce.rs:38:20
|
34 | pub fn remove_key<NewSchema: KeySchema>(self) -> RestrictedStringMap<NewSchema>
| ---------- required by a bound in this associated function
...
38 | NewSchema: SubsetExcept<S, K>,
| ^^^^^^^^^^^^^^^^^^ required by this bound in `RestrictedStringMap::<S>::remove_key`
error: internal compiler error: compiler/rustc_infer/src/infer/at.rs:400:21: relating different kinds: {const error}: &'static str KeyNil
thread 'rustc' panicked at compiler/rustc_infer/src/infer/at.rs:400:21:
Box<dyn Any>
stack backtrace:
0: 0x71096c8c7ab5 - std::backtrace_rs::backtrace::libunwind::trace::hf26b8e97f4d981a3
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5
1: 0x71096c8c7ab5 - std::backtrace_rs::backtrace::trace_unsynchronized::h257c3a9fcc68cb34
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x71096c8c7ab5 - std::sys_common::backtrace::_print_fmt::h78d592e526d576cc
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/std/src/sys_common/backtrace.rs:68:5
3: 0x71096c8c7ab5 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h406a266f6476e993
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/std/src/sys_common/backtrace.rs:44:22
4: 0x71096c916cfb - core::fmt::rt::Argument::fmt::h7950f9cc4e18eb74
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/core/src/fmt/rt.rs:142:9
5: 0x71096c916cfb - core::fmt::write::hf6d8222a297fe1b5
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/core/src/fmt/mod.rs:1153:17
6: 0x71096c8bc69f - std::io::Write::write_fmt::h2e25e66707b8719c
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/std/src/io/mod.rs:1843:15
7: 0x71096c8c788e - std::sys_common::backtrace::_print::h93052b2b7ae3e225
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/std/src/sys_common/backtrace.rs:47:5
8: 0x71096c8c788e - std::sys_common::backtrace::print::h2c3363fe806c95b9
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/std/src/sys_common/backtrace.rs:34:9
9: 0x71096c8ca2d9 - std::panicking::default_hook::{{closure}}::hccbad107bfb00663
10: 0x71096c8ca043 - std::panicking::default_hook::h0629782f23910600
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/std/src/panicking.rs:291:9
11: 0x71096920344f - std[cd169797441e4304]::panicking::update_hook::<alloc[80a8ff80e015276]::boxed::Box<rustc_driver_impl[4156c2df247de3fc]::install_ice_hook::{closure#0}>>::{closure#0}
12: 0x71096c8ca9dc - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hfd80129a92e7f542
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/alloc/src/boxed.rs:2032:9
13: 0x71096c8ca9dc - std::panicking::rust_panic_with_hook::hbdb3c4b71c4fae93
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/std/src/panicking.rs:792:13
14: 0x710969233224 - std[cd169797441e4304]::panicking::begin_panic::<rustc_errors[36548b9f9a9ea726]::ExplicitBug>::{closure#0}
15: 0x710969230146 - std[cd169797441e4304]::sys_common::backtrace::__rust_end_short_backtrace::<std[cd169797441e4304]::panicking::begin_panic<rustc_errors[36548b9f9a9ea726]::ExplicitBug>::{closure#0}, !>
16: 0x71096922fe26 - std[cd169797441e4304]::panicking::begin_panic::<rustc_errors[36548b9f9a9ea726]::ExplicitBug>
17: 0x71096923c641 - <rustc_errors[36548b9f9a9ea726]::diagnostic::BugAbort as rustc_errors[36548b9f9a9ea726]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
18: 0x7109696cfd6c - rustc_middle[f32ad3853e76b525]::util::bug::opt_span_bug_fmt::<rustc_span[abf425ab4de01d9]::span_encoding::Span>::{closure#0}
19: 0x7109696b32ca - rustc_middle[f32ad3853e76b525]::ty::context::tls::with_opt::<rustc_middle[f32ad3853e76b525]::util::bug::opt_span_bug_fmt<rustc_span[abf425ab4de01d9]::span_encoding::Span>::{closure#0}, !>::{closure#0}
20: 0x7109696b316b - rustc_middle[f32ad3853e76b525]::ty::context::tls::with_context_opt::<rustc_middle[f32ad3853e76b525]::ty::context::tls::with_opt<rustc_middle[f32ad3853e76b525]::util::bug::opt_span_bug_fmt<rustc_span[abf425ab4de01d9]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
21: 0x710967300350 - rustc_middle[f32ad3853e76b525]::util::bug::bug_fmt
22: 0x7109694bdab7 - <rustc_middle[f32ad3853e76b525]::ty::generic_args::GenericArg as rustc_infer[d75b2a27552d986e]::infer::at::ToTrace>::to_trace
23: 0x710969c50b76 - <rustc_infer[d75b2a27552d986e]::infer::at::At>::eq::<rustc_middle[f32ad3853e76b525]::ty::generic_args::GenericArg>
24: 0x710969d4fdc7 - <rustc_infer[d75b2a27552d986e]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[d9dc339916816dbb]::traits::error_reporting::type_err_ctxt_ext::InferCtxtPrivExt>::report_similar_impl_candidates
25: 0x710969d59ded - <rustc_infer[d75b2a27552d986e]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[d9dc339916816dbb]::traits::error_reporting::type_err_ctxt_ext::InferCtxtPrivExt>::try_to_add_help_message
26: 0x710969d4b7c2 - <rustc_infer[d75b2a27552d986e]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[d9dc339916816dbb]::traits::error_reporting::type_err_ctxt_ext::TypeErrCtxtExt>::report_selection_error
27: 0x710969d5c7f1 - <rustc_infer[d75b2a27552d986e]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[d9dc339916816dbb]::traits::error_reporting::type_err_ctxt_ext::InferCtxtPrivExt>::report_fulfillment_error
28: 0x710969d46bb8 - <rustc_infer[d75b2a27552d986e]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[d9dc339916816dbb]::traits::error_reporting::type_err_ctxt_ext::TypeErrCtxtExt>::report_fulfillment_errors
29: 0x71096ae44ac4 - <rustc_hir_typeck[312bf9d4ee85e4af]::fn_ctxt::FnCtxt>::type_inference_fallback
30: 0x71096a817ba7 - rustc_hir_typeck[312bf9d4ee85e4af]::typeck
31: 0x71096a817557 - rustc_query_impl[f27b006aa91c0ba0]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[f27b006aa91c0ba0]::query_impl::typeck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[f32ad3853e76b525]::query::erase::Erased<[u8; 8usize]>>
32: 0x71096a8044f1 - rustc_query_system[e2bc6f1fc30f6df]::query::plumbing::try_execute_query::<rustc_query_impl[f27b006aa91c0ba0]::DynamicConfig<rustc_query_system[e2bc6f1fc30f6df]::query::caches::VecCache<rustc_span[abf425ab4de01d9]::def_id::LocalDefId, rustc_middle[f32ad3853e76b525]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[f27b006aa91c0ba0]::plumbing::QueryCtxt, false>
33: 0x71096a80094c - rustc_query_impl[f27b006aa91c0ba0]::query_impl::typeck::get_query_non_incr::__rust_end_short_backtrace
34: 0x71096a80052b - <rustc_middle[f32ad3853e76b525]::hir::map::Map>::par_body_owners::<rustc_hir_analysis[3e5cabd178036183]::check_crate::{closure#4}>::{closure#0}
35: 0x71096a7ff1e1 - rustc_hir_analysis[3e5cabd178036183]::check_crate
36: 0x71096aace36a - rustc_interface[bc155c77a5e962ed]::passes::analysis
37: 0x71096aacded3 - rustc_query_impl[f27b006aa91c0ba0]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[f27b006aa91c0ba0]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[f32ad3853e76b525]::query::erase::Erased<[u8; 1usize]>>
38: 0x71096b412de5 - rustc_query_system[e2bc6f1fc30f6df]::query::plumbing::try_execute_query::<rustc_query_impl[f27b006aa91c0ba0]::DynamicConfig<rustc_query_system[e2bc6f1fc30f6df]::query::caches::SingleCache<rustc_middle[f32ad3853e76b525]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[f27b006aa91c0ba0]::plumbing::QueryCtxt, false>
39: 0x71096b412b49 - rustc_query_impl[f27b006aa91c0ba0]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
40: 0x71096b2cb1d3 - rustc_interface[bc155c77a5e962ed]::interface::run_compiler::<core[620758cd80b91dd0]::result::Result<(), rustc_span[abf425ab4de01d9]::ErrorGuaranteed>, rustc_driver_impl[4156c2df247de3fc]::run_compiler::{closure#0}>::{closure#0}
41: 0x71096b35ac19 - std[cd169797441e4304]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[bc155c77a5e962ed]::util::run_in_thread_with_globals<rustc_interface[bc155c77a5e962ed]::util::run_in_thread_pool_with_globals<rustc_interface[bc155c77a5e962ed]::interface::run_compiler<core[620758cd80b91dd0]::result::Result<(), rustc_span[abf425ab4de01d9]::ErrorGuaranteed>, rustc_driver_impl[4156c2df247de3fc]::run_compiler::{closure#0}>::{closure#0}, core[620758cd80b91dd0]::result::Result<(), rustc_span[abf425ab4de01d9]::ErrorGuaranteed>>::{closure#0}, core[620758cd80b91dd0]::result::Result<(), rustc_span[abf425ab4de01d9]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[620758cd80b91dd0]::result::Result<(), rustc_span[abf425ab4de01d9]::ErrorGuaranteed>>
42: 0x71096b35aa27 - <<std[cd169797441e4304]::thread::Builder>::spawn_unchecked_<rustc_interface[bc155c77a5e962ed]::util::run_in_thread_with_globals<rustc_interface[bc155c77a5e962ed]::util::run_in_thread_pool_with_globals<rustc_interface[bc155c77a5e962ed]::interface::run_compiler<core[620758cd80b91dd0]::result::Result<(), rustc_span[abf425ab4de01d9]::ErrorGuaranteed>, rustc_driver_impl[4156c2df247de3fc]::run_compiler::{closure#0}>::{closure#0}, core[620758cd80b91dd0]::result::Result<(), rustc_span[abf425ab4de01d9]::ErrorGuaranteed>>::{closure#0}, core[620758cd80b91dd0]::result::Result<(), rustc_span[abf425ab4de01d9]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[620758cd80b91dd0]::result::Result<(), rustc_span[abf425ab4de01d9]::ErrorGuaranteed>>::{closure#1} as core[620758cd80b91dd0]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
43: 0x71096c8d43fb - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hd0a22ba669218411
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/alloc/src/boxed.rs:2018:9
44: 0x71096c8d43fb - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hcc773386fb5423d0
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/alloc/src/boxed.rs:2018:9
45: 0x71096c8d43fb - std::sys::pal::unix::thread::Thread::new::thread_start::hecd789c0696ca351
at /rustc/a77322c16f188402fa22a5e87100acce42433cbc/library/std/src/sys/pal/unix/thread.rs:108:17
46: 0x7109660a955a - <unknown>
47: 0x710966126a3c - <unknown>
48: 0x0 - <unknown>
note: it seems that this compiler `1.79.0-nightly (a77322c16 2024-04-02)` is outdated, a newer nightly should have been released in the mean time
|
= note: please consider running `rustup update nightly` to update the nightly channel and check if this problem still persists
= note: if the problem still persists, we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md
note: rustc 1.79.0-nightly (a77322c16 2024-04-02) running on x86_64-unknown-linux-gnu
note: compiler flags: -Z dump-mir-dir=dir
query stack during panic:
#0 [typeck] type-checking `foo`
#1 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 27 previous errors
Some errors have detailed explanations: E0107, E0207, E0277, E0308, E0392, E0412, E0425, E0601, E0747.
For more information about an error, try `rustc --explain E0107`.