Rust errors / Everything else
Rust compiler error · checked with rustc 1.99.0
Rust error E0303: #### Note: this error code is no longer emitted by the compiler
What it means#### Note: this error code is no longer emitted by the compiler.
Retired: rustc no longer emits this error code. You may still see it in old answers, books and CI logs from older toolchains; the explanation below is kept for reference.
The compiler team's explanation
Note: this error code is no longer emitted by the compiler.
Sub-bindings, e.g. ref x @ Some(ref y) are now allowed under #![feature(bindings_after_at)] and checked to make sure that memory safety is upheld.
--------------
In certain cases it is possible for sub-bindings to violate memory safety. Updates to the borrow checker in a future version of Rust may remove this restriction, but for now patterns must be rewritten without sub-bindings.
Before:
match Some("hi".to_string()) {
ref op_string_ref @ Some(s) => {},
None => {},
}
After:
match Some("hi".to_string()) {
Some(ref s) => {
let op_string_ref = &Some(s);
// ...
},
None => {},
}
The op_string_ref binding has type &Option<&String> in both cases.
See also Issue 14587.
From rustc --explain E0303 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0061this function takes N arguments but M were supplied
- E0412cannot find type in this scope
- E0515cannot return reference to local variable
- E0728await is only allowed inside async functions and blocks
- E0267`break` inside of a closure
- E0268`break` outside of a loop or labeled block
- E0317`if` may be missing an `else` clause
- E0320overflow while adding drop-check rules for `A<T>`
Up next
Often hit nextE0061: this function takes N arguments but M were suppliedA related error from the same family.Read it next →Did this answer your question?