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