routers_codec 0.1.2

Encoding and Decoding Primitives for Routers
Documentation
#![cfg(test)]

use routers_fixtures::{DISTRICT_OF_COLUMBIA, fixture_path};

use crate::osm::element::item::Element;
use crate::osm::element::item::ProcessedElement;
use crate::osm::element::iterator::ElementIterator;
use crate::osm::element::processed_iterator::ProcessedElementIterator;
use crate::osm::parallel::Parallel;

use log::info;
use std::time::Instant;

#[test]
fn try_into_iter() {
    let path = fixture_path(DISTRICT_OF_COLUMBIA);
    let iter = ElementIterator::new(path).expect("Could not create iterator");

    iter.for_each(|item| {
        info!("Element: {}", item.str_type());
    });
}

#[test]
fn iter_count() {
    let path = fixture_path(DISTRICT_OF_COLUMBIA);
    let iter = ElementIterator::new(path).expect("Could not create iterator");
    let now = Instant::now();

    let nodes = iter.map_red(
        |item| match item {
            Element::Way(_) => 0,
            Element::Node(_) => 1,
            Element::Relation(_) => 0,
            Element::DenseNodes(_) => 0,
        },
        |a, b| a + b,
        || 0,
    );

    println!("There are {nodes} nodes");
    println!("Took: {}ms", now.elapsed().as_micros() / 1000)
}

#[test]
fn processed_iter_count() {
    let path = fixture_path(DISTRICT_OF_COLUMBIA);
    let iter = ProcessedElementIterator::new(path).expect("Could not create iterator");

    let now = Instant::now();

    let nodes = iter.map_red(
        |item| match item {
            ProcessedElement::Node(_) => 1,
            _ => 0,
        },
        |a, b| a + b,
        || 0,
    );

    println!("There are {nodes} nodes");
    println!("Took: {}ms", now.elapsed().as_micros() / 1000)
}