Как заимствовать RefCell <HashMap>, найти ключ и вернуть ссылку на результат? [Дубликат]

На этот вопрос уже есть ответ здесь:

Как мне вернуть ссылку на что-то внутри RefCell, не нарушая инкапсуляцию? 3 ответа

у меня естьRefCell<HashMap> и хотите позаимствовать таблицу, найти ключ и вернуть ссылку на результат:

use std::cell::RefCell;
use std::collections::HashMap;

struct Frame {
    map: RefCell<HashMap<String, String>>,
}

impl Frame {
    fn new() -> Frame {
        Frame {
            map: RefCell::new(HashMap::new()),
        }
    }

    fn lookup<'a>(&'a self, k: &String) -> Option<&'a String> {
        self.map.borrow().get(k)
    }
}

fn main() {
    let f = Frame::new();
    println!("{}", f.lookup(&"hello".to_string()).expect("blargh!"));
}

(детская площадка)

Если я удалюRefCell тогда все работает нормально

struct Frame {
    map: HashMap<String, String>,
}

impl Frame {
    fn lookup<'a>(&'a self, k: &String) -> Option<&'a String> {
        self.map.get(k)
    }
}

Как правильно написать функцию поиска без копирования строки в хеш-таблицу?

Ответы на вопрос(1)

Ваш ответ на вопрос