"classic2021" and "structural2021" rulesets: add eat-inherited-ref-alone deref rules
This commit is contained in:
parent
3e77657312
commit
8dc64a405d
18 changed files with 195 additions and 521 deletions
|
@ -230,10 +230,12 @@ enum InheritedRefMatchRule {
|
|||
/// underlying type is not a reference type, the inherited reference will be consumed.
|
||||
EatInner,
|
||||
/// When the underlying type is a reference type, reference patterns consume both layers of
|
||||
/// reference, i.e. they both reset the binding mode and consume the reference type. Reference
|
||||
/// patterns are not permitted when there is no underlying reference type, i.e. they can't eat
|
||||
/// only an inherited reference. This is the current stable Rust behavior.
|
||||
EatBoth,
|
||||
/// reference, i.e. they both reset the binding mode and consume the reference type.
|
||||
EatBoth {
|
||||
/// Whether to allow reference patterns to consume only an inherited reference when matching
|
||||
/// against a non-reference type. This is `false` for stable Rust.
|
||||
eat_inherited_ref_alone: bool,
|
||||
},
|
||||
}
|
||||
|
||||
impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
|
@ -259,10 +261,13 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
} else {
|
||||
// Currently, matching against an inherited ref on edition 2024 is an error.
|
||||
// Use `EatBoth` as a fallback to be similar to stable Rust.
|
||||
InheritedRefMatchRule::EatBoth
|
||||
InheritedRefMatchRule::EatBoth { eat_inherited_ref_alone: false }
|
||||
}
|
||||
} else {
|
||||
InheritedRefMatchRule::EatBoth
|
||||
InheritedRefMatchRule::EatBoth {
|
||||
eat_inherited_ref_alone: self.tcx.features().ref_pat_eat_one_layer_2024()
|
||||
|| self.tcx.features().ref_pat_eat_one_layer_2024_structural(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2381,9 +2386,29 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
return expected;
|
||||
}
|
||||
}
|
||||
InheritedRefMatchRule::EatBoth => {
|
||||
InheritedRefMatchRule::EatBoth { eat_inherited_ref_alone: true } => {
|
||||
// Reset binding mode on old editions
|
||||
pat_info.binding_mode = ByRef::No;
|
||||
|
||||
if let ty::Ref(_, _, _) = *expected.kind() {
|
||||
// Consume both the inherited and inner references.
|
||||
} else {
|
||||
// The expected type isn't a reference type, so only match against the
|
||||
// inherited reference.
|
||||
if pat_mutbl > inh_mut {
|
||||
// We can't match a lone inherited shared reference with `&mut`.
|
||||
self.error_inherited_ref_mutability_mismatch(pat, pat_prefix_span);
|
||||
}
|
||||
|
||||
self.typeck_results.borrow_mut().skipped_ref_pats_mut().insert(pat.hir_id);
|
||||
self.check_pat(inner, expected, pat_info);
|
||||
return expected;
|
||||
}
|
||||
}
|
||||
InheritedRefMatchRule::EatBoth { eat_inherited_ref_alone: false } => {
|
||||
// Reset binding mode on stable Rust. This will be a type error below if
|
||||
// `expected` is not a reference type.
|
||||
pat_info.binding_mode = ByRef::No;
|
||||
self.add_rust_2024_migration_desugared_pat(
|
||||
pat_info.top_info.hir_id,
|
||||
pat,
|
||||
|
|
|
@ -58,155 +58,20 @@ LL | if let Some(&Some(&mut _)) = &mut Some(&Some(0)) {
|
|||
found mutable reference `&mut _`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:50:17
|
||||
|
|
||||
LL | if let Some(&Some(Some(&mut x))) = &Some(Some(&mut Some(0))) {
|
||||
| ^^^^^^^^^^^^^^^^^^^ ------------------------- this expression has type `&Option<Option<&mut Option<{integer}>>>`
|
||||
| |
|
||||
| expected `Option<&mut Option<{integer}>>`, found `&_`
|
||||
|
|
||||
= note: expected enum `Option<&mut Option<{integer}>>`
|
||||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:57:17
|
||||
--> $DIR/pattern-errors.rs:56:17
|
||||
|
|
||||
LL | if let Some(&mut Some(x)) = &Some(Some(0)) {
|
||||
| ^^^^^^^^^^^^ -------------- this expression has type `&Option<Option<{integer}>>`
|
||||
| |
|
||||
| expected `Option<{integer}>`, found `&mut _`
|
||||
| ^^^^^
|
||||
|
|
||||
= note: expected enum `Option<{integer}>`
|
||||
found mutable reference `&mut _`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:66:11
|
||||
= note: cannot match inherited `&` with `&mut` pattern
|
||||
help: replace this `&mut` pattern with `&`
|
||||
|
|
||||
LL | let &[&mut x] = &&mut [0];
|
||||
| ^^^^^^ --------- this expression has type `&&mut [{integer}; 1]`
|
||||
| |
|
||||
| expected integer, found `&mut _`
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:66:11
|
||||
|
|
||||
LL | let &[&mut x] = &&mut [0];
|
||||
| ^^^^^^
|
||||
help: consider removing `&mut` from the pattern
|
||||
|
|
||||
LL - let &[&mut x] = &&mut [0];
|
||||
LL + let &[x] = &&mut [0];
|
||||
LL - if let Some(&mut Some(x)) = &Some(Some(0)) {
|
||||
LL + if let Some(&Some(x)) = &Some(Some(0)) {
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:73:11
|
||||
|
|
||||
LL | let &[&mut x] = &mut &mut [0];
|
||||
| ^^^^^^ ------------- this expression has type `&mut &mut [{integer}; 1]`
|
||||
| |
|
||||
| expected integer, found `&mut _`
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:73:11
|
||||
|
|
||||
LL | let &[&mut x] = &mut &mut [0];
|
||||
| ^^^^^^
|
||||
help: consider removing `&mut` from the pattern
|
||||
|
|
||||
LL - let &[&mut x] = &mut &mut [0];
|
||||
LL + let &[x] = &mut &mut [0];
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:80:11
|
||||
|
|
||||
LL | let &[&mut ref x] = &&mut [0];
|
||||
| ^^^^^^^^^^ --------- this expression has type `&&mut [{integer}; 1]`
|
||||
| |
|
||||
| expected integer, found `&mut _`
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:80:11
|
||||
|
|
||||
LL | let &[&mut ref x] = &&mut [0];
|
||||
| ^^^^^^^^^^
|
||||
help: consider removing `&mut` from the pattern
|
||||
|
|
||||
LL - let &[&mut ref x] = &&mut [0];
|
||||
LL + let &[ref x] = &&mut [0];
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:87:11
|
||||
|
|
||||
LL | let &[&mut ref x] = &mut &mut [0];
|
||||
| ^^^^^^^^^^ ------------- this expression has type `&mut &mut [{integer}; 1]`
|
||||
| |
|
||||
| expected integer, found `&mut _`
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:87:11
|
||||
|
|
||||
LL | let &[&mut ref x] = &mut &mut [0];
|
||||
| ^^^^^^^^^^
|
||||
help: consider removing `&mut` from the pattern
|
||||
|
|
||||
LL - let &[&mut ref x] = &mut &mut [0];
|
||||
LL + let &[ref x] = &mut &mut [0];
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:94:11
|
||||
|
|
||||
LL | let &[&mut mut x] = &&mut [0];
|
||||
| ^^^^^^^^^^ --------- this expression has type `&&mut [{integer}; 1]`
|
||||
| |
|
||||
| expected integer, found `&mut _`
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:94:11
|
||||
|
|
||||
LL | let &[&mut mut x] = &&mut [0];
|
||||
| ^^^^^^^^^^
|
||||
help: consider removing `&mut` from the pattern
|
||||
|
|
||||
LL - let &[&mut mut x] = &&mut [0];
|
||||
LL + let &[mut x] = &&mut [0];
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:101:11
|
||||
|
|
||||
LL | let &[&mut mut x] = &mut &mut [0];
|
||||
| ^^^^^^^^^^ ------------- this expression has type `&mut &mut [{integer}; 1]`
|
||||
| |
|
||||
| expected integer, found `&mut _`
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:101:11
|
||||
|
|
||||
LL | let &[&mut mut x] = &mut &mut [0];
|
||||
| ^^^^^^^^^^
|
||||
help: consider removing `&mut` from the pattern
|
||||
|
|
||||
LL - let &[&mut mut x] = &mut &mut [0];
|
||||
LL + let &[mut x] = &mut &mut [0];
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:122:11
|
||||
--> $DIR/pattern-errors.rs:114:11
|
||||
|
|
||||
LL | let [&&mut x] = &[&mut 0];
|
||||
| ^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -222,7 +87,7 @@ LL + let [&x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:129:11
|
||||
--> $DIR/pattern-errors.rs:121:11
|
||||
|
|
||||
LL | let [&&mut x] = &mut [&mut 0];
|
||||
| ^^^^^^ ------------- this expression has type `&mut [&mut {integer}; 1]`
|
||||
|
@ -238,7 +103,7 @@ LL + let [&x] = &mut [&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:136:11
|
||||
--> $DIR/pattern-errors.rs:128:11
|
||||
|
|
||||
LL | let [&&mut ref x] = &[&mut 0];
|
||||
| ^^^^^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -254,7 +119,7 @@ LL + let [&ref x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:143:11
|
||||
--> $DIR/pattern-errors.rs:135:11
|
||||
|
|
||||
LL | let [&&mut ref x] = &mut [&mut 0];
|
||||
| ^^^^^^^^^^ ------------- this expression has type `&mut [&mut {integer}; 1]`
|
||||
|
@ -270,7 +135,7 @@ LL + let [&ref x] = &mut [&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:150:11
|
||||
--> $DIR/pattern-errors.rs:142:11
|
||||
|
|
||||
LL | let [&&mut mut x] = &[&mut 0];
|
||||
| ^^^^^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -286,7 +151,7 @@ LL + let [&mut x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:157:11
|
||||
--> $DIR/pattern-errors.rs:149:11
|
||||
|
|
||||
LL | let [&&mut mut x] = &mut [&mut 0];
|
||||
| ^^^^^^^^^^ ------------- this expression has type `&mut [&mut {integer}; 1]`
|
||||
|
@ -302,7 +167,7 @@ LL + let [&mut x] = &mut [&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:172:15
|
||||
--> $DIR/pattern-errors.rs:164:15
|
||||
|
|
||||
LL | let [&mut &x] = &[&mut 0];
|
||||
| ^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -318,7 +183,7 @@ LL + let [&mut x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:178:15
|
||||
--> $DIR/pattern-errors.rs:170:15
|
||||
|
|
||||
LL | let [&mut &ref x] = &[&mut 0];
|
||||
| ^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -334,7 +199,7 @@ LL + let [&mut ref x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:184:15
|
||||
--> $DIR/pattern-errors.rs:176:15
|
||||
|
|
||||
LL | let [&mut &(mut x)] = &[&mut 0];
|
||||
| ^^^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -349,6 +214,6 @@ LL - let [&mut &(mut x)] = &[&mut 0];
|
|||
LL + let [&mut mut x)] = &[&mut 0];
|
||||
|
|
||||
|
||||
error: aborting due to 21 previous errors
|
||||
error: aborting due to 14 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
|
|
|
@ -64,7 +64,7 @@ LL + if let Some(&Some(&_)) = &mut Some(&Some(0)) {
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:57:17
|
||||
--> $DIR/pattern-errors.rs:56:17
|
||||
|
|
||||
LL | if let Some(&mut Some(x)) = &Some(Some(0)) {
|
||||
| ^^^^^
|
||||
|
@ -77,7 +77,7 @@ LL + if let Some(&Some(x)) = &Some(Some(0)) {
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:166:10
|
||||
--> $DIR/pattern-errors.rs:158:10
|
||||
|
|
||||
LL | let [&mut x] = &[&mut 0];
|
||||
| ^^^^^
|
||||
|
@ -90,7 +90,7 @@ LL + let [&x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:172:10
|
||||
--> $DIR/pattern-errors.rs:164:10
|
||||
|
|
||||
LL | let [&mut &x] = &[&mut 0];
|
||||
| ^^^^^
|
||||
|
@ -103,7 +103,7 @@ LL + let [&&x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:178:10
|
||||
--> $DIR/pattern-errors.rs:170:10
|
||||
|
|
||||
LL | let [&mut &ref x] = &[&mut 0];
|
||||
| ^^^^^
|
||||
|
@ -116,7 +116,7 @@ LL + let [&&ref x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:184:10
|
||||
--> $DIR/pattern-errors.rs:176:10
|
||||
|
|
||||
LL | let [&mut &(mut x)] = &[&mut 0];
|
||||
| ^^^^^
|
||||
|
|
|
@ -48,62 +48,54 @@ pub fn main() {
|
|||
//[classic2024,structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
}
|
||||
if let Some(&Some(Some(&mut x))) = &Some(Some(&mut Some(0))) {
|
||||
//[stable2021,classic2021,structural2021,structural2024]~^ ERROR: mismatched types
|
||||
//[stable2021,structural2021,structural2024]~^ ERROR: mismatched types
|
||||
//[stable2021]~| expected `Option<&mut Option<{integer}>>`, found `&_`
|
||||
//[structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
// TODO: the error on `structural2021` should be an inherited ref mutability mismatch too
|
||||
#[cfg(classic2024)] let _: u32 = x; // TODO: this should hold on `classic2021` too
|
||||
//[structural2021,structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
#[cfg(any(classic2021, classic2024))] let _: u32 = x;
|
||||
}
|
||||
if let Some(&mut Some(x)) = &Some(Some(0)) {
|
||||
//~^ ERROR: mismatched types
|
||||
//[stable2021,classic2021,structural2021]~| expected `Option<{integer}>`, found `&mut _`
|
||||
//[classic2024,structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
// TODO: the error on `classic2021` and `structural2021` should be the mutability mismatch
|
||||
//[stable2021]~| expected `Option<{integer}>`, found `&mut _`
|
||||
//[classic2021,structural2021,classic2024,structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
}
|
||||
}
|
||||
|
||||
fn structural_errors_0() {
|
||||
let &[&mut x] = &&mut [0];
|
||||
//[stable2021,classic2021,structural2021,structural2024]~^ ERROR: mismatched types
|
||||
//[stable2021,structural2021,structural2024]~^ ERROR: mismatched types
|
||||
//[stable2021]~| expected integer, found `&mut _`
|
||||
//[structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
// TODO: the error on `structural2021` should be an inherited ref mutability mismatch too
|
||||
#[cfg(classic2024)] let _: u32 = x; // TODO: this should hold for `classic2021` too
|
||||
//[structural2021,structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
#[cfg(any(classic2021, classic2024))] let _: u32 = x;
|
||||
|
||||
let &[&mut x] = &mut &mut [0];
|
||||
//[stable2021,classic2021,structural2021,structural2024]~^ ERROR: mismatched types
|
||||
//[stable2021,structural2021,structural2024]~^ ERROR: mismatched types
|
||||
//[stable2021]~| types differ in mutability
|
||||
//[structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
// TODO: the error on `structural2021` should be an inherited ref mutability mismatch too
|
||||
#[cfg(classic2024)] let _: u32 = x; // TODO: this should hold for `classic2021` too
|
||||
//[structural2021,structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
#[cfg(any(classic2021, classic2024))] let _: u32 = x;
|
||||
|
||||
let &[&mut ref x] = &&mut [0];
|
||||
//[stable2021,classic2021,structural2021,structural2024]~^ ERROR: mismatched types
|
||||
//[stable2021,structural2021,structural2024]~^ ERROR: mismatched types
|
||||
//[stable2021]~| expected integer, found `&mut _`
|
||||
//[structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
// TODO: the error on `structural2021` should be an inherited ref mutability mismatch too
|
||||
#[cfg(classic2024)] let _: &u32 = x; // TODO: this should hold for `classic2021` too
|
||||
//[structural2021,structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
#[cfg(any(classic2021, classic2024))] let _: &u32 = x;
|
||||
|
||||
let &[&mut ref x] = &mut &mut [0];
|
||||
//[stable2021,classic2021,structural2021,structural2024]~^ ERROR: mismatched types
|
||||
//[stable2021,structural2021,structural2024]~^ ERROR: mismatched types
|
||||
//[stable2021]~| types differ in mutability
|
||||
//[structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
// TODO: the error on `structural2021` should be an inherited ref mutability mismatch too
|
||||
#[cfg(classic2024)] let _: &u32 = x; // TODO: this should hold for `classic2021` too
|
||||
//[structural2021,structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
#[cfg(any(classic2021, classic2024))] let _: &u32 = x;
|
||||
|
||||
let &[&mut mut x] = &&mut [0];
|
||||
//[stable2021,classic2021,structural2021,structural2024]~^ ERROR: mismatched types
|
||||
//[stable2021,structural2021,structural2024]~^ ERROR: mismatched types
|
||||
//[stable2021]~| expected integer, found `&mut _`
|
||||
//[structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
// TODO: the error on `structural2021` should be an inherited ref mutability mismatch too
|
||||
#[cfg(classic2024)] let _: u32 = x; // TODO: this should hold for `classic2021` too
|
||||
//[structural2021,structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
#[cfg(any(classic2021, classic2024))] let _: u32 = x;
|
||||
|
||||
let &[&mut mut x] = &mut &mut [0];
|
||||
//[stable2021,classic2021,structural2021,structural2024]~^ ERROR: mismatched types
|
||||
//[stable2021,structural2021,structural2024]~^ ERROR: mismatched types
|
||||
//[stable2021]~| types differ in mutability
|
||||
//[structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
// TODO: the error on `structural2021` should be an inherited ref mutability mismatch too
|
||||
#[cfg(classic2024)] let _: u32 = x; // TODO: this should hold for `classic2021` too
|
||||
//[structural2021,structural2024]~| cannot match inherited `&` with `&mut` pattern
|
||||
#[cfg(any(classic2021, classic2024))] let _: u32 = x;
|
||||
}
|
||||
|
||||
fn structural_errors_1() {
|
||||
|
|
|
@ -59,7 +59,7 @@ LL | if let Some(&Some(Some(&mut x))) = &Some(Some(&mut Some(0))) {
|
|||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:57:17
|
||||
--> $DIR/pattern-errors.rs:56:17
|
||||
|
|
||||
LL | if let Some(&mut Some(x)) = &Some(Some(0)) {
|
||||
| ^^^^^^^^^^^^ -------------- this expression has type `&Option<Option<{integer}>>`
|
||||
|
@ -70,7 +70,7 @@ LL | if let Some(&mut Some(x)) = &Some(Some(0)) {
|
|||
found mutable reference `&mut _`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:66:11
|
||||
--> $DIR/pattern-errors.rs:64:11
|
||||
|
|
||||
LL | let &[&mut x] = &&mut [0];
|
||||
| ^^^^^^ --------- this expression has type `&&mut [{integer}; 1]`
|
||||
|
@ -80,7 +80,7 @@ LL | let &[&mut x] = &&mut [0];
|
|||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:66:11
|
||||
--> $DIR/pattern-errors.rs:64:11
|
||||
|
|
||||
LL | let &[&mut x] = &&mut [0];
|
||||
| ^^^^^^
|
||||
|
@ -91,7 +91,7 @@ LL + let &[x] = &&mut [0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:73:9
|
||||
--> $DIR/pattern-errors.rs:70:9
|
||||
|
|
||||
LL | let &[&mut x] = &mut &mut [0];
|
||||
| ^^^^^^^^^ ------------- this expression has type `&mut &mut [{integer}; 1]`
|
||||
|
@ -102,7 +102,7 @@ LL | let &[&mut x] = &mut &mut [0];
|
|||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:80:11
|
||||
--> $DIR/pattern-errors.rs:76:11
|
||||
|
|
||||
LL | let &[&mut ref x] = &&mut [0];
|
||||
| ^^^^^^^^^^ --------- this expression has type `&&mut [{integer}; 1]`
|
||||
|
@ -112,7 +112,7 @@ LL | let &[&mut ref x] = &&mut [0];
|
|||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:80:11
|
||||
--> $DIR/pattern-errors.rs:76:11
|
||||
|
|
||||
LL | let &[&mut ref x] = &&mut [0];
|
||||
| ^^^^^^^^^^
|
||||
|
@ -123,7 +123,7 @@ LL + let &[ref x] = &&mut [0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:87:9
|
||||
--> $DIR/pattern-errors.rs:82:9
|
||||
|
|
||||
LL | let &[&mut ref x] = &mut &mut [0];
|
||||
| ^^^^^^^^^^^^^ ------------- this expression has type `&mut &mut [{integer}; 1]`
|
||||
|
@ -134,7 +134,7 @@ LL | let &[&mut ref x] = &mut &mut [0];
|
|||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:94:11
|
||||
--> $DIR/pattern-errors.rs:88:11
|
||||
|
|
||||
LL | let &[&mut mut x] = &&mut [0];
|
||||
| ^^^^^^^^^^ --------- this expression has type `&&mut [{integer}; 1]`
|
||||
|
@ -144,7 +144,7 @@ LL | let &[&mut mut x] = &&mut [0];
|
|||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:94:11
|
||||
--> $DIR/pattern-errors.rs:88:11
|
||||
|
|
||||
LL | let &[&mut mut x] = &&mut [0];
|
||||
| ^^^^^^^^^^
|
||||
|
@ -155,7 +155,7 @@ LL + let &[mut x] = &&mut [0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:101:9
|
||||
--> $DIR/pattern-errors.rs:94:9
|
||||
|
|
||||
LL | let &[&mut mut x] = &mut &mut [0];
|
||||
| ^^^^^^^^^^^^^ ------------- this expression has type `&mut &mut [{integer}; 1]`
|
||||
|
@ -166,7 +166,7 @@ LL | let &[&mut mut x] = &mut &mut [0];
|
|||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:122:10
|
||||
--> $DIR/pattern-errors.rs:114:10
|
||||
|
|
||||
LL | let [&&mut x] = &[&mut 0];
|
||||
| ^^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -177,7 +177,7 @@ LL | let [&&mut x] = &[&mut 0];
|
|||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:129:10
|
||||
--> $DIR/pattern-errors.rs:121:10
|
||||
|
|
||||
LL | let [&&mut x] = &mut [&mut 0];
|
||||
| ^^^^^^^ ------------- this expression has type `&mut [&mut {integer}; 1]`
|
||||
|
@ -188,7 +188,7 @@ LL | let [&&mut x] = &mut [&mut 0];
|
|||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:136:10
|
||||
--> $DIR/pattern-errors.rs:128:10
|
||||
|
|
||||
LL | let [&&mut ref x] = &[&mut 0];
|
||||
| ^^^^^^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -199,7 +199,7 @@ LL | let [&&mut ref x] = &[&mut 0];
|
|||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:143:10
|
||||
--> $DIR/pattern-errors.rs:135:10
|
||||
|
|
||||
LL | let [&&mut ref x] = &mut [&mut 0];
|
||||
| ^^^^^^^^^^^ ------------- this expression has type `&mut [&mut {integer}; 1]`
|
||||
|
@ -210,7 +210,7 @@ LL | let [&&mut ref x] = &mut [&mut 0];
|
|||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:150:10
|
||||
--> $DIR/pattern-errors.rs:142:10
|
||||
|
|
||||
LL | let [&&mut mut x] = &[&mut 0];
|
||||
| ^^^^^^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -221,7 +221,7 @@ LL | let [&&mut mut x] = &[&mut 0];
|
|||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:157:10
|
||||
--> $DIR/pattern-errors.rs:149:10
|
||||
|
|
||||
LL | let [&&mut mut x] = &mut [&mut 0];
|
||||
| ^^^^^^^^^^^ ------------- this expression has type `&mut [&mut {integer}; 1]`
|
||||
|
@ -232,7 +232,7 @@ LL | let [&&mut mut x] = &mut [&mut 0];
|
|||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:172:15
|
||||
--> $DIR/pattern-errors.rs:164:15
|
||||
|
|
||||
LL | let [&mut &x] = &[&mut 0];
|
||||
| ^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -248,7 +248,7 @@ LL + let [&mut x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:178:15
|
||||
--> $DIR/pattern-errors.rs:170:15
|
||||
|
|
||||
LL | let [&mut &ref x] = &[&mut 0];
|
||||
| ^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -264,7 +264,7 @@ LL + let [&mut ref x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:184:15
|
||||
--> $DIR/pattern-errors.rs:176:15
|
||||
|
|
||||
LL | let [&mut &(mut x)] = &[&mut 0];
|
||||
| ^^^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
|
|
@ -58,155 +58,111 @@ LL | if let Some(&Some(&mut _)) = &mut Some(&Some(0)) {
|
|||
found mutable reference `&mut _`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:50:17
|
||||
--> $DIR/pattern-errors.rs:50:28
|
||||
|
|
||||
LL | if let Some(&Some(Some(&mut x))) = &Some(Some(&mut Some(0))) {
|
||||
| ^^^^^^^^^^^^^^^^^^^ ------------------------- this expression has type `&Option<Option<&mut Option<{integer}>>>`
|
||||
| |
|
||||
| expected `Option<&mut Option<{integer}>>`, found `&_`
|
||||
| ^^^^^
|
||||
|
|
||||
= note: cannot match inherited `&` with `&mut` pattern
|
||||
help: replace this `&mut` pattern with `&`
|
||||
|
|
||||
LL - if let Some(&Some(Some(&mut x))) = &Some(Some(&mut Some(0))) {
|
||||
LL + if let Some(&Some(Some(&x))) = &Some(Some(&mut Some(0))) {
|
||||
|
|
||||
= note: expected enum `Option<&mut Option<{integer}>>`
|
||||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:57:17
|
||||
--> $DIR/pattern-errors.rs:56:17
|
||||
|
|
||||
LL | if let Some(&mut Some(x)) = &Some(Some(0)) {
|
||||
| ^^^^^^^^^^^^ -------------- this expression has type `&Option<Option<{integer}>>`
|
||||
| |
|
||||
| expected `Option<{integer}>`, found `&mut _`
|
||||
| ^^^^^
|
||||
|
|
||||
= note: cannot match inherited `&` with `&mut` pattern
|
||||
help: replace this `&mut` pattern with `&`
|
||||
|
|
||||
LL - if let Some(&mut Some(x)) = &Some(Some(0)) {
|
||||
LL + if let Some(&Some(x)) = &Some(Some(0)) {
|
||||
|
|
||||
= note: expected enum `Option<{integer}>`
|
||||
found mutable reference `&mut _`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:66:11
|
||||
--> $DIR/pattern-errors.rs:64:11
|
||||
|
|
||||
LL | let &[&mut x] = &&mut [0];
|
||||
| ^^^^^^ --------- this expression has type `&&mut [{integer}; 1]`
|
||||
| |
|
||||
| expected integer, found `&mut _`
|
||||
| ^^^^^
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:66:11
|
||||
|
|
||||
LL | let &[&mut x] = &&mut [0];
|
||||
| ^^^^^^
|
||||
help: consider removing `&mut` from the pattern
|
||||
= note: cannot match inherited `&` with `&mut` pattern
|
||||
help: replace this `&mut` pattern with `&`
|
||||
|
|
||||
LL - let &[&mut x] = &&mut [0];
|
||||
LL + let &[x] = &&mut [0];
|
||||
LL + let &[&x] = &&mut [0];
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:73:11
|
||||
--> $DIR/pattern-errors.rs:70:11
|
||||
|
|
||||
LL | let &[&mut x] = &mut &mut [0];
|
||||
| ^^^^^^ ------------- this expression has type `&mut &mut [{integer}; 1]`
|
||||
| |
|
||||
| expected integer, found `&mut _`
|
||||
| ^^^^^
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:73:11
|
||||
|
|
||||
LL | let &[&mut x] = &mut &mut [0];
|
||||
| ^^^^^^
|
||||
help: consider removing `&mut` from the pattern
|
||||
= note: cannot match inherited `&` with `&mut` pattern
|
||||
help: replace this `&mut` pattern with `&`
|
||||
|
|
||||
LL - let &[&mut x] = &mut &mut [0];
|
||||
LL + let &[x] = &mut &mut [0];
|
||||
LL + let &[&x] = &mut &mut [0];
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:80:11
|
||||
--> $DIR/pattern-errors.rs:76:11
|
||||
|
|
||||
LL | let &[&mut ref x] = &&mut [0];
|
||||
| ^^^^^^^^^^ --------- this expression has type `&&mut [{integer}; 1]`
|
||||
| |
|
||||
| expected integer, found `&mut _`
|
||||
| ^^^^^
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:80:11
|
||||
|
|
||||
LL | let &[&mut ref x] = &&mut [0];
|
||||
| ^^^^^^^^^^
|
||||
help: consider removing `&mut` from the pattern
|
||||
= note: cannot match inherited `&` with `&mut` pattern
|
||||
help: replace this `&mut` pattern with `&`
|
||||
|
|
||||
LL - let &[&mut ref x] = &&mut [0];
|
||||
LL + let &[ref x] = &&mut [0];
|
||||
LL + let &[&ref x] = &&mut [0];
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:87:11
|
||||
--> $DIR/pattern-errors.rs:82:11
|
||||
|
|
||||
LL | let &[&mut ref x] = &mut &mut [0];
|
||||
| ^^^^^^^^^^ ------------- this expression has type `&mut &mut [{integer}; 1]`
|
||||
| |
|
||||
| expected integer, found `&mut _`
|
||||
| ^^^^^
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:87:11
|
||||
|
|
||||
LL | let &[&mut ref x] = &mut &mut [0];
|
||||
| ^^^^^^^^^^
|
||||
help: consider removing `&mut` from the pattern
|
||||
= note: cannot match inherited `&` with `&mut` pattern
|
||||
help: replace this `&mut` pattern with `&`
|
||||
|
|
||||
LL - let &[&mut ref x] = &mut &mut [0];
|
||||
LL + let &[ref x] = &mut &mut [0];
|
||||
LL + let &[&ref x] = &mut &mut [0];
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:94:11
|
||||
--> $DIR/pattern-errors.rs:88:11
|
||||
|
|
||||
LL | let &[&mut mut x] = &&mut [0];
|
||||
| ^^^^^^^^^^ --------- this expression has type `&&mut [{integer}; 1]`
|
||||
| |
|
||||
| expected integer, found `&mut _`
|
||||
| ^^^^^
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:94:11
|
||||
|
|
||||
LL | let &[&mut mut x] = &&mut [0];
|
||||
| ^^^^^^^^^^
|
||||
help: consider removing `&mut` from the pattern
|
||||
= note: cannot match inherited `&` with `&mut` pattern
|
||||
help: replace this `&mut` pattern with `&`
|
||||
|
|
||||
LL - let &[&mut mut x] = &&mut [0];
|
||||
LL + let &[mut x] = &&mut [0];
|
||||
LL + let &[&mut x] = &&mut [0];
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:101:11
|
||||
--> $DIR/pattern-errors.rs:94:11
|
||||
|
|
||||
LL | let &[&mut mut x] = &mut &mut [0];
|
||||
| ^^^^^^^^^^ ------------- this expression has type `&mut &mut [{integer}; 1]`
|
||||
| |
|
||||
| expected integer, found `&mut _`
|
||||
| ^^^^^
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/pattern-errors.rs:101:11
|
||||
|
|
||||
LL | let &[&mut mut x] = &mut &mut [0];
|
||||
| ^^^^^^^^^^
|
||||
help: consider removing `&mut` from the pattern
|
||||
= note: cannot match inherited `&` with `&mut` pattern
|
||||
help: replace this `&mut` pattern with `&`
|
||||
|
|
||||
LL - let &[&mut mut x] = &mut &mut [0];
|
||||
LL + let &[mut x] = &mut &mut [0];
|
||||
LL + let &[&mut x] = &mut &mut [0];
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:122:11
|
||||
--> $DIR/pattern-errors.rs:114:11
|
||||
|
|
||||
LL | let [&&mut x] = &[&mut 0];
|
||||
| ^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -222,7 +178,7 @@ LL + let [&x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:129:11
|
||||
--> $DIR/pattern-errors.rs:121:11
|
||||
|
|
||||
LL | let [&&mut x] = &mut [&mut 0];
|
||||
| ^^^^^^ ------------- this expression has type `&mut [&mut {integer}; 1]`
|
||||
|
@ -238,7 +194,7 @@ LL + let [&x] = &mut [&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:136:11
|
||||
--> $DIR/pattern-errors.rs:128:11
|
||||
|
|
||||
LL | let [&&mut ref x] = &[&mut 0];
|
||||
| ^^^^^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -254,7 +210,7 @@ LL + let [&ref x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:143:11
|
||||
--> $DIR/pattern-errors.rs:135:11
|
||||
|
|
||||
LL | let [&&mut ref x] = &mut [&mut 0];
|
||||
| ^^^^^^^^^^ ------------- this expression has type `&mut [&mut {integer}; 1]`
|
||||
|
@ -270,7 +226,7 @@ LL + let [&ref x] = &mut [&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:150:11
|
||||
--> $DIR/pattern-errors.rs:142:11
|
||||
|
|
||||
LL | let [&&mut mut x] = &[&mut 0];
|
||||
| ^^^^^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -286,7 +242,7 @@ LL + let [&mut x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:157:11
|
||||
--> $DIR/pattern-errors.rs:149:11
|
||||
|
|
||||
LL | let [&&mut mut x] = &mut [&mut 0];
|
||||
| ^^^^^^^^^^ ------------- this expression has type `&mut [&mut {integer}; 1]`
|
||||
|
@ -302,7 +258,7 @@ LL + let [&mut x] = &mut [&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:172:15
|
||||
--> $DIR/pattern-errors.rs:164:15
|
||||
|
|
||||
LL | let [&mut &x] = &[&mut 0];
|
||||
| ^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -318,7 +274,7 @@ LL + let [&mut x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:178:15
|
||||
--> $DIR/pattern-errors.rs:170:15
|
||||
|
|
||||
LL | let [&mut &ref x] = &[&mut 0];
|
||||
| ^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
@ -334,7 +290,7 @@ LL + let [&mut ref x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:184:15
|
||||
--> $DIR/pattern-errors.rs:176:15
|
||||
|
|
||||
LL | let [&mut &(mut x)] = &[&mut 0];
|
||||
| ^^^^^^^^ --------- this expression has type `&[&mut {integer}; 1]`
|
||||
|
|
|
@ -51,7 +51,7 @@ LL + if let Some(&Some(Some(&x))) = &Some(Some(&mut Some(0))) {
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:57:17
|
||||
--> $DIR/pattern-errors.rs:56:17
|
||||
|
|
||||
LL | if let Some(&mut Some(x)) = &Some(Some(0)) {
|
||||
| ^^^^^
|
||||
|
@ -64,7 +64,7 @@ LL + if let Some(&Some(x)) = &Some(Some(0)) {
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:66:11
|
||||
--> $DIR/pattern-errors.rs:64:11
|
||||
|
|
||||
LL | let &[&mut x] = &&mut [0];
|
||||
| ^^^^^
|
||||
|
@ -77,7 +77,7 @@ LL + let &[&x] = &&mut [0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:73:11
|
||||
--> $DIR/pattern-errors.rs:70:11
|
||||
|
|
||||
LL | let &[&mut x] = &mut &mut [0];
|
||||
| ^^^^^
|
||||
|
@ -90,7 +90,7 @@ LL + let &[&x] = &mut &mut [0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:80:11
|
||||
--> $DIR/pattern-errors.rs:76:11
|
||||
|
|
||||
LL | let &[&mut ref x] = &&mut [0];
|
||||
| ^^^^^
|
||||
|
@ -103,7 +103,7 @@ LL + let &[&ref x] = &&mut [0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:87:11
|
||||
--> $DIR/pattern-errors.rs:82:11
|
||||
|
|
||||
LL | let &[&mut ref x] = &mut &mut [0];
|
||||
| ^^^^^
|
||||
|
@ -116,7 +116,7 @@ LL + let &[&ref x] = &mut &mut [0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:94:11
|
||||
--> $DIR/pattern-errors.rs:88:11
|
||||
|
|
||||
LL | let &[&mut mut x] = &&mut [0];
|
||||
| ^^^^^
|
||||
|
@ -129,7 +129,7 @@ LL + let &[&mut x] = &&mut [0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:101:11
|
||||
--> $DIR/pattern-errors.rs:94:11
|
||||
|
|
||||
LL | let &[&mut mut x] = &mut &mut [0];
|
||||
| ^^^^^
|
||||
|
@ -142,7 +142,7 @@ LL + let &[&mut x] = &mut &mut [0];
|
|||
|
|
||||
|
||||
error[E0658]: binding cannot be both mutable and by-reference
|
||||
--> $DIR/pattern-errors.rs:110:12
|
||||
--> $DIR/pattern-errors.rs:102:12
|
||||
|
|
||||
LL | let [&(mut x)] = &[&0];
|
||||
| ^^^^
|
||||
|
@ -152,7 +152,7 @@ LL | let [&(mut x)] = &[&0];
|
|||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
|
||||
error[E0658]: binding cannot be both mutable and by-reference
|
||||
--> $DIR/pattern-errors.rs:115:12
|
||||
--> $DIR/pattern-errors.rs:107:12
|
||||
|
|
||||
LL | let [&(mut x)] = &mut [&0];
|
||||
| ^^^^
|
||||
|
@ -162,7 +162,7 @@ LL | let [&(mut x)] = &mut [&0];
|
|||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:122:11
|
||||
--> $DIR/pattern-errors.rs:114:11
|
||||
|
|
||||
LL | let [&&mut x] = &[&mut 0];
|
||||
| ^^^^^
|
||||
|
@ -175,7 +175,7 @@ LL + let [&&x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:129:11
|
||||
--> $DIR/pattern-errors.rs:121:11
|
||||
|
|
||||
LL | let [&&mut x] = &mut [&mut 0];
|
||||
| ^^^^^
|
||||
|
@ -188,7 +188,7 @@ LL + let [&&x] = &mut [&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:136:11
|
||||
--> $DIR/pattern-errors.rs:128:11
|
||||
|
|
||||
LL | let [&&mut ref x] = &[&mut 0];
|
||||
| ^^^^^
|
||||
|
@ -201,7 +201,7 @@ LL + let [&&ref x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:143:11
|
||||
--> $DIR/pattern-errors.rs:135:11
|
||||
|
|
||||
LL | let [&&mut ref x] = &mut [&mut 0];
|
||||
| ^^^^^
|
||||
|
@ -214,7 +214,7 @@ LL + let [&&ref x] = &mut [&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:150:11
|
||||
--> $DIR/pattern-errors.rs:142:11
|
||||
|
|
||||
LL | let [&&mut mut x] = &[&mut 0];
|
||||
| ^^^^^
|
||||
|
@ -227,7 +227,7 @@ LL + let [&&mut x] = &[&mut 0];
|
|||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/pattern-errors.rs:157:11
|
||||
--> $DIR/pattern-errors.rs:149:11
|
||||
|
|
||||
LL | let [&&mut mut x] = &mut [&mut 0];
|
||||
| ^^^^^
|
||||
|
|
|
@ -1,18 +1,7 @@
|
|||
error[E0308]: mismatched types
|
||||
--> $DIR/ref-mut-inside-shared-ref-pat.rs:16:17
|
||||
|
|
||||
LL | if let Some(&Some(ref mut x)) = &mut Some(Some(0)) { // TODO: `classic2021` and `structural2021` shouldn't have mismatched types
|
||||
| ^^^^^^^^^^^^^^^^ ------------------ this expression has type `&mut Option<Option<{integer}>>`
|
||||
| |
|
||||
| expected `Option<{integer}>`, found `&_`
|
||||
|
|
||||
= note: expected enum `Option<{integer}>`
|
||||
found reference `&_`
|
||||
|
||||
error[E0596]: cannot borrow as mutable inside an `&` pattern
|
||||
--> $DIR/ref-mut-inside-shared-ref-pat.rs:16:31
|
||||
|
|
||||
LL | if let Some(&Some(ref mut x)) = &mut Some(Some(0)) { // TODO: `classic2021` and `structural2021` shouldn't have mismatched types
|
||||
LL | if let Some(&Some(ref mut x)) = &mut Some(Some(0)) {
|
||||
| - ^
|
||||
| |
|
||||
| help: replace this `&` with `&mut`: `&mut`
|
||||
|
@ -57,7 +46,6 @@ LL | let &[x] = &mut &mut [0];
|
|||
| |
|
||||
| help: replace this `&` with `&mut`: `&mut`
|
||||
|
||||
error: aborting due to 7 previous errors
|
||||
error: aborting due to 6 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0308, E0596.
|
||||
For more information about an error, try `rustc --explain E0308`.
|
||||
For more information about this error, try `rustc --explain E0596`.
|
||||
|
|
|
@ -13,8 +13,8 @@
|
|||
#![cfg_attr(any(structural2021, structural2024), feature(ref_pat_eat_one_layer_2024_structural))]
|
||||
|
||||
pub fn main() {
|
||||
if let Some(&mut Some(ref mut x)) = &mut Some(Some(0)) { // TODO: `classic2021` and `structural2021` shouldn't have mismatched types
|
||||
//[stable2021,classic2021,structural2021]~^ ERROR: mismatched types
|
||||
if let Some(&mut Some(ref mut x)) = &mut Some(Some(0)) {
|
||||
//[stable2021]~^ ERROR: mismatched types
|
||||
//[classic2021,structural2021,classic2024,structural2024]~^^ ERROR: cannot borrow as mutable inside an `&` pattern
|
||||
let _: &mut u8 = x;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
error[E0596]: cannot borrow as mutable inside an `&` pattern
|
||||
--> $DIR/ref-mut-inside-shared-ref-pat.rs:16:31
|
||||
|
|
||||
LL | if let Some(&Some(ref mut x)) = &mut Some(Some(0)) { // TODO: `classic2021` and `structural2021` shouldn't have mismatched types
|
||||
LL | if let Some(&Some(ref mut x)) = &mut Some(Some(0)) {
|
||||
| - ^
|
||||
| |
|
||||
| help: replace this `&` with `&mut`: `&mut`
|
||||
|
|
|
@ -13,8 +13,8 @@
|
|||
#![cfg_attr(any(structural2021, structural2024), feature(ref_pat_eat_one_layer_2024_structural))]
|
||||
|
||||
pub fn main() {
|
||||
if let Some(&Some(ref mut x)) = &mut Some(Some(0)) { // TODO: `classic2021` and `structural2021` shouldn't have mismatched types
|
||||
//[stable2021,classic2021,structural2021]~^ ERROR: mismatched types
|
||||
if let Some(&Some(ref mut x)) = &mut Some(Some(0)) {
|
||||
//[stable2021]~^ ERROR: mismatched types
|
||||
//[classic2021,structural2021,classic2024,structural2024]~^^ ERROR: cannot borrow as mutable inside an `&` pattern
|
||||
let _: &mut u8 = x;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
error[E0308]: mismatched types
|
||||
--> $DIR/ref-mut-inside-shared-ref-pat.rs:16:17
|
||||
|
|
||||
LL | if let Some(&Some(ref mut x)) = &mut Some(Some(0)) { // TODO: `classic2021` and `structural2021` shouldn't have mismatched types
|
||||
LL | if let Some(&Some(ref mut x)) = &mut Some(Some(0)) {
|
||||
| ^^^^^^^^^^^^^^^^ ------------------ this expression has type `&mut Option<Option<{integer}>>`
|
||||
| |
|
||||
| expected `Option<{integer}>`, found `&_`
|
||||
|
|
|
@ -1,18 +1,7 @@
|
|||
error[E0308]: mismatched types
|
||||
--> $DIR/ref-mut-inside-shared-ref-pat.rs:16:17
|
||||
|
|
||||
LL | if let Some(&Some(ref mut x)) = &mut Some(Some(0)) { // TODO: `classic2021` and `structural2021` shouldn't have mismatched types
|
||||
| ^^^^^^^^^^^^^^^^ ------------------ this expression has type `&mut Option<Option<{integer}>>`
|
||||
| |
|
||||
| expected `Option<{integer}>`, found `&_`
|
||||
|
|
||||
= note: expected enum `Option<{integer}>`
|
||||
found reference `&_`
|
||||
|
||||
error[E0596]: cannot borrow as mutable inside an `&` pattern
|
||||
--> $DIR/ref-mut-inside-shared-ref-pat.rs:16:31
|
||||
|
|
||||
LL | if let Some(&Some(ref mut x)) = &mut Some(Some(0)) { // TODO: `classic2021` and `structural2021` shouldn't have mismatched types
|
||||
LL | if let Some(&Some(ref mut x)) = &mut Some(Some(0)) {
|
||||
| - ^
|
||||
| |
|
||||
| help: replace this `&` with `&mut`: `&mut`
|
||||
|
@ -49,7 +38,6 @@ LL | let &(ref mut a, ref mut b) = &mut (true, false);
|
|||
| |
|
||||
| help: replace this `&` with `&mut`: `&mut`
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
error: aborting due to 5 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0308, E0596.
|
||||
For more information about an error, try `rustc --explain E0308`.
|
||||
For more information about this error, try `rustc --explain E0596`.
|
||||
|
|
|
@ -13,8 +13,8 @@
|
|||
#![cfg_attr(any(structural2021, structural2024), feature(ref_pat_eat_one_layer_2024_structural))]
|
||||
|
||||
pub fn main() {
|
||||
if let Some(&mut Some(ref mut x)) = &mut Some(Some(0)) { // TODO: `classic2021` and `structural2021` shouldn't have mismatched types
|
||||
//[stable2021,classic2021,structural2021]~^ ERROR: mismatched types
|
||||
if let Some(&mut Some(ref mut x)) = &mut Some(Some(0)) {
|
||||
//[stable2021]~^ ERROR: mismatched types
|
||||
//[classic2021,structural2021,classic2024,structural2024]~^^ ERROR: cannot borrow as mutable inside an `&` pattern
|
||||
let _: &mut u8 = x;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
error[E0596]: cannot borrow as mutable inside an `&` pattern
|
||||
--> $DIR/ref-mut-inside-shared-ref-pat.rs:16:31
|
||||
|
|
||||
LL | if let Some(&Some(ref mut x)) = &mut Some(Some(0)) { // TODO: `classic2021` and `structural2021` shouldn't have mismatched types
|
||||
LL | if let Some(&Some(ref mut x)) = &mut Some(Some(0)) {
|
||||
| - ^
|
||||
| |
|
||||
| help: replace this `&` with `&mut`: `&mut`
|
||||
|
|
|
@ -14,54 +14,6 @@ LL - if let Some(Some(&&x)) = &Some(Some(&0)) {
|
|||
LL + if let Some(Some(&x)) = &Some(Some(&0)) {
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/well-typed-edition-2024.rs:39:22
|
||||
|
|
||||
LL | if let Some(Some(&x)) = &Some(&Some(0)) {
|
||||
| ^^ --------------- this expression has type `&Option<&Option<{integer}>>`
|
||||
| |
|
||||
| expected integer, found `&_`
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found reference `&_`
|
||||
help: consider removing `&` from the pattern
|
||||
|
|
||||
LL - if let Some(Some(&x)) = &Some(&Some(0)) {
|
||||
LL + if let Some(Some(x)) = &Some(&Some(0)) {
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/well-typed-edition-2024.rs:44:17
|
||||
|
|
||||
LL | if let Some(&Some(x)) = &Some(Some(0)) {
|
||||
| ^^^^^^^^ -------------- this expression has type `&Option<Option<{integer}>>`
|
||||
| |
|
||||
| expected `Option<{integer}>`, found `&_`
|
||||
|
|
||||
= note: expected enum `Option<{integer}>`
|
||||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/well-typed-edition-2024.rs:49:22
|
||||
|
|
||||
LL | if let Some(Some(&mut x)) = &mut Some(&mut Some(0)) {
|
||||
| ^^^^^^ ----------------------- this expression has type `&mut Option<&mut Option<{integer}>>`
|
||||
| |
|
||||
| expected integer, found `&mut _`
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/well-typed-edition-2024.rs:49:22
|
||||
|
|
||||
LL | if let Some(Some(&mut x)) = &mut Some(&mut Some(0)) {
|
||||
| ^^^^^^
|
||||
help: consider removing `&mut` from the pattern
|
||||
|
|
||||
LL - if let Some(Some(&mut x)) = &mut Some(&mut Some(0)) {
|
||||
LL + if let Some(Some(x)) = &mut Some(&mut Some(0)) {
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/well-typed-edition-2024.rs:63:23
|
||||
|
|
||||
|
@ -78,28 +30,6 @@ LL - if let Some(&Some(&x)) = &Some(&Some(0)) {
|
|||
LL + if let Some(&Some(x)) = &Some(&Some(0)) {
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/well-typed-edition-2024.rs:70:17
|
||||
|
|
||||
LL | if let Some(&Some(Some(&x))) = &Some(Some(&mut Some(0))) {
|
||||
| ^^^^^^^^^^^^^^^ ------------------------- this expression has type `&Option<Option<&mut Option<{integer}>>>`
|
||||
| |
|
||||
| expected `Option<&mut Option<{integer}>>`, found `&_`
|
||||
|
|
||||
= note: expected enum `Option<&mut Option<{integer}>>`
|
||||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/well-typed-edition-2024.rs:75:17
|
||||
|
|
||||
LL | if let Some(&Some(x)) = &mut Some(Some(0)) {
|
||||
| ^^^^^^^^ ------------------ this expression has type `&mut Option<Option<{integer}>>`
|
||||
| |
|
||||
| expected `Option<{integer}>`, found `&_`
|
||||
|
|
||||
= note: expected enum `Option<{integer}>`
|
||||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/well-typed-edition-2024.rs:82:23
|
||||
|
|
||||
|
@ -249,6 +179,6 @@ LL | let [&mut &(mut x)] = &mut [&0];
|
|||
= note: expected reference `&{integer}`
|
||||
found mutable reference `&mut _`
|
||||
|
||||
error: aborting due to 16 previous errors
|
||||
error: aborting due to 11 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
|
|
|
@ -37,19 +37,19 @@ pub fn main() {
|
|||
|
||||
// Tests for eating a lone inherited reference
|
||||
if let Some(Some(&x)) = &Some(&Some(0)) {
|
||||
//[stable2021,classic2021,structural2021]~^ mismatched types
|
||||
//[stable2021,classic2021,structural2021]~| expected integer, found `&_`
|
||||
#[cfg(any(classic2024, structural2024))] let _: u32 = x; // TODO: this should hold on `classic2021` and `structural2021`
|
||||
//[stable2021]~^ mismatched types
|
||||
//[stable2021]~| expected integer, found `&_`
|
||||
#[cfg(any(classic2021, structural2021, classic2024, structural2024))] let _: u32 = x;
|
||||
}
|
||||
if let Some(&Some(x)) = &Some(Some(0)) {
|
||||
//[stable2021,classic2021,structural2021]~^ mismatched types
|
||||
//[stable2021,classic2021,structural2021]~| expected `Option<{integer}>`, found `&_`
|
||||
#[cfg(any(classic2024, structural2024))] let _: u32 = x; // TODO: this should hold on `classic2021` and `structural2021`
|
||||
//[stable2021]~^ mismatched types
|
||||
//[stable2021]~| expected `Option<{integer}>`, found `&_`
|
||||
#[cfg(any(classic2021, structural2021, classic2024, structural2024))] let _: u32 = x;
|
||||
}
|
||||
if let Some(Some(&mut x)) = &mut Some(&mut Some(0)) {
|
||||
//[stable2021,classic2021,structural2021]~^ mismatched types
|
||||
//[stable2021,classic2021,structural2021]~| expected integer, found `&mut _`
|
||||
#[cfg(any(classic2024, structural2024))] let _: u32 = x; // TODO: this should hold on `classic2021` and `structural2021`
|
||||
//[stable2021]~^ mismatched types
|
||||
//[stable2021]~| expected integer, found `&mut _`
|
||||
#[cfg(any(classic2021, structural2021, classic2024, structural2024))] let _: u32 = x;
|
||||
}
|
||||
|
||||
// Tests for `&` patterns matching real `&mut` reference types
|
||||
|
@ -68,14 +68,14 @@ pub fn main() {
|
|||
|
||||
// Tests for `&` matching a lone inherited possibly-`&mut` reference
|
||||
if let Some(&Some(Some(&x))) = &Some(Some(&mut Some(0))) {
|
||||
//[stable2021,classic2021,structural2021]~^ mismatched types
|
||||
//[stable2021]~^ mismatched types
|
||||
//[stable2021]~| expected `Option<&mut Option<{integer}>>`, found `&_`
|
||||
#[cfg(any(classic2024, structural2024))] let _: u32 = x; // TODO: this should hold on `classic2021` and `structural2021`
|
||||
#[cfg(any(classic2021, structural2021, classic2024, structural2024))] let _: u32 = x;
|
||||
}
|
||||
if let Some(&Some(x)) = &mut Some(Some(0)) {
|
||||
//[stable2021,classic2021,structural2021]~^ mismatched types
|
||||
//[stable2021]~^ mismatched types
|
||||
//[stable2021]~| expected `Option<{integer}>`, found `&_`
|
||||
#[cfg(any(classic2024, structural2024))] let _: u32 = x; // TODO: this should hold on `classic2021` and `structural2021`
|
||||
#[cfg(any(classic2021, structural2021, classic2024, structural2024))] let _: u32 = x;
|
||||
}
|
||||
|
||||
// Tests eating one layer, eating a lone inherited ref, and `&` eating `&mut` (realness varies)
|
||||
|
|
|
@ -14,54 +14,6 @@ LL - if let Some(Some(&&x)) = &Some(Some(&0)) {
|
|||
LL + if let Some(Some(&x)) = &Some(Some(&0)) {
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/well-typed-edition-2024.rs:39:22
|
||||
|
|
||||
LL | if let Some(Some(&x)) = &Some(&Some(0)) {
|
||||
| ^^ --------------- this expression has type `&Option<&Option<{integer}>>`
|
||||
| |
|
||||
| expected integer, found `&_`
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found reference `&_`
|
||||
help: consider removing `&` from the pattern
|
||||
|
|
||||
LL - if let Some(Some(&x)) = &Some(&Some(0)) {
|
||||
LL + if let Some(Some(x)) = &Some(&Some(0)) {
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/well-typed-edition-2024.rs:44:17
|
||||
|
|
||||
LL | if let Some(&Some(x)) = &Some(Some(0)) {
|
||||
| ^^^^^^^^ -------------- this expression has type `&Option<Option<{integer}>>`
|
||||
| |
|
||||
| expected `Option<{integer}>`, found `&_`
|
||||
|
|
||||
= note: expected enum `Option<{integer}>`
|
||||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/well-typed-edition-2024.rs:49:22
|
||||
|
|
||||
LL | if let Some(Some(&mut x)) = &mut Some(&mut Some(0)) {
|
||||
| ^^^^^^ ----------------------- this expression has type `&mut Option<&mut Option<{integer}>>`
|
||||
| |
|
||||
| expected integer, found `&mut _`
|
||||
|
|
||||
= note: expected type `{integer}`
|
||||
found mutable reference `&mut _`
|
||||
note: to declare a mutable binding use: `mut x`
|
||||
--> $DIR/well-typed-edition-2024.rs:49:22
|
||||
|
|
||||
LL | if let Some(Some(&mut x)) = &mut Some(&mut Some(0)) {
|
||||
| ^^^^^^
|
||||
help: consider removing `&mut` from the pattern
|
||||
|
|
||||
LL - if let Some(Some(&mut x)) = &mut Some(&mut Some(0)) {
|
||||
LL + if let Some(Some(x)) = &mut Some(&mut Some(0)) {
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/well-typed-edition-2024.rs:63:23
|
||||
|
|
||||
|
@ -78,28 +30,6 @@ LL - if let Some(&Some(&x)) = &Some(&Some(0)) {
|
|||
LL + if let Some(&Some(x)) = &Some(&Some(0)) {
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/well-typed-edition-2024.rs:70:17
|
||||
|
|
||||
LL | if let Some(&Some(Some(&x))) = &Some(Some(&mut Some(0))) {
|
||||
| ^^^^^^^^^^^^^^^ ------------------------- this expression has type `&Option<Option<&mut Option<{integer}>>>`
|
||||
| |
|
||||
| expected `Option<&mut Option<{integer}>>`, found `&_`
|
||||
|
|
||||
= note: expected enum `Option<&mut Option<{integer}>>`
|
||||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/well-typed-edition-2024.rs:75:17
|
||||
|
|
||||
LL | if let Some(&Some(x)) = &mut Some(Some(0)) {
|
||||
| ^^^^^^^^ ------------------ this expression has type `&mut Option<Option<{integer}>>`
|
||||
| |
|
||||
| expected `Option<{integer}>`, found `&_`
|
||||
|
|
||||
= note: expected enum `Option<{integer}>`
|
||||
found reference `&_`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/well-typed-edition-2024.rs:82:23
|
||||
|
|
||||
|
@ -249,6 +179,6 @@ LL | let [&mut &(mut x)] = &mut [&0];
|
|||
= note: expected reference `&{integer}`
|
||||
found mutable reference `&mut _`
|
||||
|
||||
error: aborting due to 16 previous errors
|
||||
error: aborting due to 11 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue