От Why can't I store a value and a reference to that value in the same struct? Я узнал, что не могу сохранить значение и ссылку в той же структуре.Как смоделировать двунаправленную карту, не раздражая проверку чека?
Предлагаемое решение:
Самый простой и наиболее рекомендуемым решением является не пытаться поместить эти элементы в одной и той же структуры вместе. Делая это, ваша структура вложенности будет имитировать время жизни вашего кода. Поместите типы, которые содержат данные в структуру вместе, а затем предоставит методы, которые позволят вам получить ссылки или объекты, содержащие ссылки по мере необходимости.
Однако, я не знаю, как применить это в моем конкретном случае:
Я хочу построить двунаправленную карту, реализованную два внутренних HashMap
с. Очевидно, что один из них должен владеть данными. Однако другая часть также важна для двунаправленной карты, поэтому я не вижу, как я мог бы разделять эти два, сохраняя при этом двунаправленный интерфейс карты.
struct BidiMap<'a, S: 'a, T: 'a> { ? }
fn put(&mut self, s: S, t: T) ->()
fn get(&self, s: &S) -> T
fn get_reverse(&self, t: &T) -> S
Что делать, если вы хотите получить изменяемую ссылку, потому что вам нужно изменить одно из значений? – khc
@khc, тогда вам понадобится [внутренняя изменчивость] (https://doc.rust-lang.org/stable/std/cell/). – Shepmaster