pub fn encode<T>(value: &T) -> Result<Vec<u8>, Error>where
    T: Encode,