From ab797e7f30e5e8913faf73516346129b9a620550 Mon Sep 17 00:00:00 2001 From: tom barrett Date: Wed, 11 Apr 2018 09:00:27 -0500 Subject: -moved over to hashmap --- src/connection.rs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/connection.rs') diff --git a/src/connection.rs b/src/connection.rs index 081805b..6ec2d16 100644 --- a/src/connection.rs +++ b/src/connection.rs @@ -1,6 +1,7 @@ use std::io::prelude::*; use std::io::BufReader; use std::net::TcpStream; +use std::collections::HashMap; extern crate serde_json; @@ -17,19 +18,14 @@ pub struct Connection { } impl Connection { - pub fn new(mut stream : TcpStream, masses : &mut Vec>) -> Connection { + pub fn new(mut stream : TcpStream, masses : &mut HashMap>) -> Connection { let mut buff_r = BufReader::new(stream.try_clone().unwrap()); let mut recv = String::new(); buff_r.read_line(&mut recv).unwrap(); let name = &recv[..recv.find(":").unwrap()]; - match masses.iter().find(|ship| ship.name() == name).is_some() { - false => masses.push(Box::new(Ship::new(name, (0.0, 0.0, 0.0)))), - _ => (), - } - - let mass = masses.iter().find(|ship| ship.name() == name).unwrap(); + let mass = masses.entry(name.to_string()).or_insert(Box::new(Ship::new(name, (0.0, 0.0, 0.0)))); let ship = mass.downcast_ref::().unwrap(); let modules = ship.recv_modules(); @@ -50,7 +46,7 @@ impl Connection { } } - pub fn process(&mut self, mut masses : &mut Vec>) { + pub fn process(&mut self, mut masses : &mut HashMap>) { self.open = match self.module { Module::Engines => self.server_engines(&mut masses), Module::Dashboard => self.server_dashboard(&mut masses), -- cgit v1.2.3