debt64 3.1.0

An implementation of Base64 - https://en.wikipedia.org/wiki/Base64
Documentation
// License: see LICENSE file at root directory of `master` branch

extern crate debt64;

use std::env;
use std::str::FromStr;
use std::time::{Duration, Instant};

/// # Gets test duration
fn duration() -> Duration {
    match env::var("TEST_DURATION").map(|s| u8::from_str(&s)) {
        Ok(Ok(duration)) => Duration::from_secs(duration.max(1) as u64),
        _ => Duration::from_secs(10),
    }
}

#[test]
#[ignore]
fn encode() {
    let duration = duration();
    let start_time = Instant::now();
    let bytes = debt64::ID.as_bytes();
    let mut count: usize = 0;
    loop {
        let standard = debt64::encode_standard(&bytes);
        let imap = debt64::encode_imap(&standard.as_bytes()[..bytes.len()]);
        let mime = debt64::encode_mime(&imap.as_bytes()[..bytes.len()]);
        let url = debt64::encode_url(&mime.as_bytes()[..bytes.len()]);
        assert!(debt64::encode_freenet_url(&url.as_bytes()[..bytes.len()]).is_empty() == false);
        match Instant::now().duration_since(start_time) <= duration {
            true => count = match count.checked_add(5) {
                Some(count) => count,
                None => break,
            },
            false => break,
        };
    }
    println!("{:?}, count: {} >>> {} << encoded/second >>", duration, count, count as f64 / duration.as_secs() as f64);
}

#[test]
#[ignore]
fn decode() {
    let bytes = debt64::ID.as_bytes();
    let standard = debt64::encode_standard(bytes);
    let imap = debt64::encode_imap(bytes);
    let mime = debt64::encode_mime(bytes);
    let url = debt64::encode_url(bytes);
    let freenet_url = debt64::encode_freenet_url(bytes);

    let duration = duration();
    let start_time = Instant::now();
    let mut count: usize = 0;
    loop {
        debt64::decode_standard(&standard).unwrap();
        debt64::decode_imap(&imap).unwrap();
        debt64::decode_mime(&mime).unwrap();
        debt64::decode_url(&url).unwrap();
        debt64::decode_freenet_url(&freenet_url).unwrap();
        match Instant::now().duration_since(start_time) <= duration {
            true => count = match count.checked_add(5) {
                Some(count) => count,
                None => break,
            },
            false => break,
        };
    }
    println!("{:?}, count: {} --> {} [[ decoded/second ]]", duration, count, count as f64 / duration.as_secs() as f64);
}