benc0de 0.2.0

A super-faster bencode parser
Documentation
use std::time::{Instant, Duration};

//extern crate benc0de;
use benc0de::{BenParser, BenItem};

fn main() {
    let mut reader = BenParser::new();
    let bs = "d3:blai-42e4:porti4711e1:rd2:id20:abcdefghij01234567895:token8:aoeusnth6:valuesl6:axje.u6:idhtnmee1:t2:aa1:y1:re".as_bytes();

    let now = Instant::now();
    let mut x = 0u8;
    let mut y = 0isize;
    for _ in 0..5_000_000 {
        let mut root = reader.parse(bs);

        y = y.wrapping_add(root.get("bla").number().unwrap());
        y = y.wrapping_add(root.get("port").number().unwrap());
        let mut resp = root.get("r");

        x = x.wrapping_add(resp.get("id").bytes().unwrap()[0]);
        x = x.wrapping_add(resp.get("token").bytes().unwrap()[0]);

        for v in resp.get("values").iter_bytes() {
            x = x.wrapping_add(v[0]);
        }

        x = x.wrapping_add(root.get("t").bytes().unwrap()[0]);
        x = x.wrapping_add(root.get("y").bytes().unwrap()[0]);
    }
    let sec = now.elapsed().as_secs_f64();

    println!("(x, y) = ({}, {})", x, y);
    let gigabyte = (bs.len() as f64 * 5_000_000f64) / 1_000_000_000f64;

    println!("Speed: {:.3} GB/s", gigabyte / sec);
}