5

を使用しようとしてHashMap<String, &Trait>いますが、理解できないエラー メッセージが表示されます。コードは次のとおりです(遊び場):

use std::collections::HashMap;

trait Trait {}

struct Struct;

impl Trait for Struct {}

fn main() {
    let mut map: HashMap<String, &Trait> = HashMap::new();
    let s = Struct;
    map.insert("key".to_string(), &s);
}

これが私が得ているエラーです:

error[E0597]: `s` does not live long enough
  --> src/main.rs:12:36
   |
12 |     map.insert("key".to_string(), &s);
   |                                    ^ borrowed value does not live long enough
13 | }
   | - `s` dropped here while still borrowed
   |
   = note: values in a scope are dropped in the opposite order they are created

ここで何が起こっているのですか?回避策はありますか?

4

1 に答える 1