extern crate bincode; extern crate rustc_serialize; use self::bincode::SizeLimit::Infinite; use self::bincode::rustc_serialize::{encode, decode}; use self::rustc_serialize::{Encodable, Decodable}; use self::rustc_serialize::hex::{FromHex, ToHex}; pub fn into_hex(obj: S) -> Option { encode(&obj, Infinite).ok().map(|e| e.to_hex()) } pub fn from_hex(s: &str) -> Option { let s = s.from_hex().unwrap(); decode(&s).ok() } pub fn reserialize(obj: S) -> S { let s = into_hex(obj).unwrap(); from_hex(&s).unwrap() }