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/navigation.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/navigation.rs') diff --git a/src/navigation.rs b/src/navigation.rs index b15103e..1a4d0dd 100644 --- a/src/navigation.rs +++ b/src/navigation.rs @@ -1,3 +1,4 @@ +use std::collections::HashMap; use std::net::TcpStream; use std::io::{BufRead, BufReader}; use std::io::{stdout, Read, Write}; @@ -92,14 +93,14 @@ pub fn client_navigation(name : String, mut stream : TcpStream, mut buff_r : Buf } impl Connection { - pub fn server_navigation(&mut self, masses : &mut Vec>) -> bool { - let m = masses.to_vec(); - let mass = masses.into_iter().find(|ship| ship.name() == &self.name).unwrap(); + pub fn server_navigation(&mut self, masses : &mut HashMap>) -> bool { + let masses_clone = masses.clone(); + let mass = masses.get_mut(&self.name).unwrap(); let ship = mass.downcast_mut::().unwrap(); match ship.recv_target() { Some(name) => { - let target = m.iter().find(|target| target.name() == &name).unwrap(); + let target = masses_clone.get(&name).unwrap(); if distance(target.position(), ship.position()) > ship.recv_range() { ship.give_target(None); } @@ -107,9 +108,9 @@ impl Connection { None => (), } - let within_range : Vec<&Box> = m.iter().filter(|mass| - distance(ship.position(), mass.position()) < ship.recv_range()) - .collect(); + let within_range : Vec<&Box> = masses_clone.values().filter(|mass| + distance(ship.position(), mass.position()) < ship.recv_range()) + .collect(); let mut send = String::new(); for mass in within_range { send.push_str(&mass.serialize()); -- cgit v1.2.3