From c14dcf1998f5ba1ffea813da4f793fc3bde8c2b7 Mon Sep 17 00:00:00 2001 From: tom barrett Date: Mon, 26 Feb 2018 08:51:08 -0600 Subject: -figured out way to deserialize using serde_erased --- src/navigation.rs | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'src/navigation.rs') diff --git a/src/navigation.rs b/src/navigation.rs index 02156d3..bcb0c4d 100644 --- a/src/navigation.rs +++ b/src/navigation.rs @@ -2,23 +2,39 @@ use std::net::TcpStream; use std::io::BufRead; use std::io::BufReader; +extern crate erased_serde; extern crate serde_json; +use std::collections::BTreeMap; + use mass::Mass; use ship::Ship; +use astroid::Astroid; + +use erased_serde::Deserializer; pub fn Navigation(mut stream :TcpStream, mut buff_r : BufReader){ loop { let mut data = String::new(); buff_r.read_line(&mut data).unwrap(); - let string_masses = data.split(","); - //let masses : Vec> = Vec::new(); + + let string_masses = data.split(";"); + let mut masses : Vec> = Vec::new(); for string_mass in string_masses { - //let mass = Box::new(Ship::new("",(0,0,0))); - //mass.deserialize(string_mass); + if string_mass.len() == 1 { + break; + } + let json = &mut serde_json::de::Deserializer::from_slice(string_mass.as_bytes()); + let mut deserialized : Box = Box::new(Deserializer::erase(json)); - //let mass : Box = serde_json::from_str(string_mass).unwrap(); - //masses.push(Box::new(mass)); + if string_mass.contains("Ship") { + let mass : Ship = erased_serde::deserialize(&mut deserialized).unwrap(); + masses.push(Box::new(mass)); + } + else { + let mass : Astroid = erased_serde::deserialize(&mut deserialized).unwrap(); + masses.push(Box::new(mass)); + } } } } -- cgit v1.2.3