-
Notifications
You must be signed in to change notification settings - Fork 14k
Closed
Description
For this code
use core::hashmap::linear::LinearMap;
fn fun1() {
let mut map = LinearMap::new();
map.insert(1, 2);
// ok
let size;
size = *map.get(&1);
map.insert(2, size);
}
fn fun2() {
let mut map = LinearMap::new();
map.insert(1, 2);
let size = *map.get(&1); // note: prior loan of immutable granted here
map.insert(2, size); // error: loan of mutable local variable as mutable conflicts with prior loan
}
fn fun3() {
let mut map = LinearMap::new();
map.insert(1, 2);
// more bad, same as fun2
map.insert(2, *map.get(&1));
}
fn main() {}fun1 passes through the compiler, but both fun2 and fun3 generate an error (listed in fun2) and I'm not sure why fun2 is invalid while fun1 is valid.
Metadata
Metadata
Assignees
Labels
A-lifetimesArea: Lifetimes / regionsArea: Lifetimes / regions