Как использовать элемент структуры в качестве собственного ключа при вставке структуры в карту, не дублируя ее?

Можно ли вставить структуру в карту, где ключ принадлежит вставляемому значению?

При использовании хеш-карт в C, это то, что я привык делать.

Пример псевдокода:

struct MyStruct {
    pub map: BTreeMap<&String, StructThatContainsString>,
    // XXX            ^ Rust wants lifetime specified here!
}

struct StructThatContainsString {
    id: String,
    other_data: u32,
}

fn my_fn() {
    let ms = MyStruct { map: BTreeMap::new() };

    let item = StructThatContainsString {
        id: "Some Key".to_string(),
        other_data: 0,
    }

    ms.insert(&item.id, item);
}

Как правильно решить эту ситуацию?

Если это невозможно, можно ли сделать обратное, где значение содержит ссылку на ключ, который будетString ?

Альтернативой может быть использованиеset вместоmap, а затем хранить всеstruct в качестве ключа, но при сравнении используйте только одно из его значений(кажется, это будет работать, но может иметь неприятные последствия, если вы хотите сравнитьstruct в других контекстах).

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

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