summaryrefslogtreecommitdiff
path: root/src/connection.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/connection.rs')
-rw-r--r--src/connection.rs22
1 files changed, 10 insertions, 12 deletions
diff --git a/src/connection.rs b/src/connection.rs
index f0b3c25..954cd27 100644
--- a/src/connection.rs
+++ b/src/connection.rs
@@ -9,7 +9,7 @@ use mass::Mass;
use module::Module;
pub struct Connection {
- pub index : usize,
+ pub name : String,
pub module : Module,
pub stream : TcpStream,
pub buff_r : BufReader<TcpStream>,
@@ -24,17 +24,15 @@ impl Connection {
buff_r.read_line(&mut data).unwrap();
let name = &data[..data.find(":").unwrap()];
- let result = masses.into_iter().position(|ship| ship.name() == name);
- let index = match result {
- Some(index) => index,
- None => {
- let ship = Box::new(Ship::new(name, (0.0, 0.0, 0.0)));
- masses.push(ship);
- masses.len() - 1
- },
- };
+ 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 ship = mass.downcast_ref::<Ship>().unwrap();
- let modules = masses[index].downcast_ref::<Ship>().unwrap().get_modules();
+ let modules = ship.get_modules();
stream.write(modules.as_bytes()).unwrap();
let mut data = String::new();
@@ -44,7 +42,7 @@ impl Connection {
stream.set_nonblocking(true).unwrap();
Connection {
- index : index,
+ name : String::from(name),
module : module,
stream : stream,
buff_r : buff_r,