我有一系列国家,我想产生这些国家之间的关系,因此国家A和国家B之间的关系总是与国家B和国家A之间的关系相同.
例如,日本和厄瓜多尔有15.我希望能够同时运行的关系值get_relationship("Japan", "Ecuador");,并get_relationship("Ecuador", "Japan");始终得到15.理想情况下,我不想将此值存储两次,因为我不想打扰它保持同步.
以下是我目前的实验代码.请注意,我储存的国家作为HashMap的(name as String, Nation as struct)不相干的原因,主要是让我能拉起所需的Nation单独的名字对象.
extern crate rand;
use std::collections::HashMap;
use rand::Rng;
struct Nation;
pub struct NationManager {
nations: HashMap<String, Nation>, // The string is the nation's name
rels: HashMap<String, HashMap<String, i8>>, // Again, both Strings are names
}
impl NationManager {
fn generate_relationships(&mut self) {
let mut random_rel: i8 = rand::thread_rng().gen_range(1, 101);
for (source, _) in &self.nations {
for (target, _) in …Run Code Online (Sandbox Code Playgroud) rust ×1