fermah-common 0.1.2

Fermah common utilities and types.
Documentation
pub mod bytes;
pub mod encoding;
pub mod error;
pub mod hash;
pub mod serializable_error;

#[cfg(test)]
mod tests {
    use blake3::Hash;
    use encoding::{base64_encoded, hex_encoded};
    use serde::{Deserialize, Serialize};

    use super::*;
    use crate::{hash::blake3::Blake3Hash, operator::OperatorId};

    #[derive(Serialize, Deserialize, Debug)]
    struct TestStruct {
        #[serde(with = "hex_encoded")]
        hash_blake: Blake3Hash,
        #[serde(with = "hex_encoded")]
        hex: Vec<u8>,
        opid: OperatorId,
        #[serde(with = "base64_encoded")]
        base64: Vec<u8>,
    }

    #[test]
    fn test_encodings() {
        let test = TestStruct {
            hash_blake: Blake3Hash(Hash::from([1; 32])),
            hex: vec![1; 32],
            // hex_32: [1; 32],
            opid: OperatorId::from(&[1; 20]),
            base64: vec![1; 32],
        };

        let s = serde_json::to_string_pretty(&test).unwrap();

        println!("{}", s);

        let rs: TestStruct = serde_json::from_str(&s).unwrap();
        assert_eq!(test.hash_blake, rs.hash_blake);
        assert_eq!(test.hex, rs.hex);
        assert_eq!(test.base64, rs.base64);
        println!("{:?}", rs);
    }
}