svgparser 0.8.1

Featureful, pull-based, zero-allocation SVG parser.
Documentation
#[macro_use]
extern crate bencher;
extern crate svgparser;

use std::fs;
use std::env;
use std::io::Read;

use bencher::Bencher;

use svgparser::{svg, FromSpan};

fn load_file(path: &str) -> String {
    let path = env::current_dir().unwrap().join(path);
    let mut file = fs::File::open(&path).unwrap();
    let mut text = String::new();
    file.read_to_string(&mut text).unwrap();
    text
}

fn parse(text: &str) {
    for token in svg::Tokenizer::from_str(text) {
        let _ = token.unwrap();
        // TODO: parse attribute values
    }
}

fn skull(bencher: &mut Bencher) {
    let text = load_file("benches/horns_scary.svg");
    bencher.iter(|| parse(&text))
}

fn jupiter(bencher: &mut Bencher) {
    let text = load_file("benches/Jupiter_diagram.svg");
    bencher.iter(|| parse(&text))
}

fn logo(bencher: &mut Bencher) {
    let text = load_file("benches/SVG_logo.svg");
    bencher.iter(|| parse(&text))
}

benchmark_group!(benches, skull, jupiter, logo);
benchmark_main!(benches);