Rust Hashmaps, где клавиши являются ссылками на содержание значенийC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Rust Hashmaps, где клавиши являются ссылками на содержание значений

Сообщение Anonymous »

Я переношу некоторые из моих более сложных кодов C ++ в Rust как способ выучить язык. Одна вещь, которую у меня есть, - это карта значений, представленная в соответствии с строкой std ::, удерживаемой внутри типа значения, чтобы избежать копирования строки в клавишу карт, которую я использую string_view . Из -за того, как он используется, ключ всегда будет указывать на действительную строку, хранящуюся в его значении. Ржавчина ниже представляет структуры, которые я портирую. Любая помощь оценена! < /P>

Код: Выделить всё

use std::collections::HashMap;
use std::sync::Arc;

// A thing with a name and other guff
struct BaseThing {
name : String,
data1 : String,
data2 : f32
// and many more bits of data
}

// a thing raised to a power is a component of our value
struct Component {
pub base_thing: Arc,
pub power: i32,
}

type ComponentsMap = HashMap;

// Ideally want this....
// type ComponentsMap = HashMap;

// A value is a collection of BaseThings raised to a power
// indexed by the name of the thing.
struct Value {
pub components: ComponentsMap
// and some other bits as well
}

fn addComponent(value : &mut Value,
base_thing : Arc,
power : i32)
{
// The map is indexed by the name of the baseThing being inserted.
value.components.insert(base_thing.name.clone(),
Component {
base_thing: base_thing,
power : power });
}
edit
Спасибо за все ответы, я использую IdordMap от https://github.com/oxidecomputer/iddqd.

Подробнее здесь: https://stackoverflow.com/questions/796 ... ned-values
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»