moros 0.12.0

MOROS: Obscure Rust Operating System
Documentation
use alloc::vec::Vec;
use base64::prelude::*;

pub struct Base64;

impl Base64 {
    pub fn encode(s: &[u8]) -> Vec<u8> {
        BASE64_STANDARD_NO_PAD.encode(s).as_bytes().to_vec()
    }

    pub fn decode(s: &[u8]) -> Result<Vec<u8>, ()> {
        BASE64_STANDARD_NO_PAD.decode(s).map_err(|_| ())
    }
}

#[test_case]
fn test_base64() {
    let tests = [
        (b"abcdefghijklm", b"YWJjZGVmZ2hpamtsbQ"),
        (b"Hello, World!", b"SGVsbG8sIFdvcmxkIQ"),
        (b"~~~~~, ?????!", b"fn5+fn4sID8/Pz8/IQ"),
    ];
    for (decoded, encoded) in tests {
        assert_eq!(Base64::encode(decoded), encoded.to_vec());
        assert_eq!(Base64::decode(encoded), Ok(decoded.to_vec()));
    }
}