Rust errors / Everything else
Rust compiler error · checked with rustc 1.99.0
Rust error E0386: #### 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.
This error occurs when an attempt is made to mutate the target of a mutable reference stored inside an immutable container.
For example, this can happen when storing a &mut inside an immutable Box:
let mut x: i64 = 1;
let y: Box<_> = Box::new(&mut x);
**y = 2; // error, cannot assign to data in an immutable container
This error can be fixed by making the container mutable:
let mut x: i64 = 1;
let mut y: Box<_> = Box::new(&mut x);
**y = 2;
It can also be fixed by using a type with interior mutability, such as Cell or RefCell:
use std::cell::Cell;
let x: i64 = 1;
let y: Box<Cell<_>> = Box::new(Cell::new(x));
y.set(2);From rustc --explain E0386 (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
- E0320overflow while adding drop-check rules for `A<T>`
- E0370enum discriminant overflowed
- E0436functional record update syntax requires a struct
- E0455link kind `framework` is only supported on Apple targets
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?