pub fn deserialize_label_message( mut vec : Vec<u8> ) -> ( String, Vec<u8>){
let mut label_and_message = vec.split_off(8);
let mut array = [0; 8];
let bytes = &vec[..array.len()]; array.copy_from_slice(bytes);
let message = label_and_message.split_off( usize::from_be_bytes(array) );
( String::from_utf8(label_and_message).unwrap(), message )
}
pub fn serialize_label_message( label : String, msg : Vec<u8>) -> Vec<u8>{
let mut vec = usize::to_be_bytes( label.len() ).to_vec();
assert_eq!(8,vec.len());
vec.extend( label.as_bytes().to_vec());
vec.extend(msg);
vec
}
pub fn put_type( message_type : i8, bytes : &mut Vec<u8>){
bytes.insert(0, message_type as u8)
}
pub fn get_type( bytes : &mut Vec<u8>) -> i8 {
bytes.remove(0) as i8
}