open-geocode 0.1.0

Lightweight geocoding engine: build a binary Pack from OSM extracts and serve search, autocomplete, and reverse geocoding from a single Rust runtime.
Documentation
use std::time::Duration;

use indicatif::{ProgressBar, ProgressStyle};

pub(crate) fn byte_progress_bar(len: u64, message: &'static str) -> ProgressBar {
    let progress = ProgressBar::new(len);
    progress.set_style(
        ProgressStyle::with_template(
            "{msg:32} [{bar:40.cyan/blue}] {percent:>3}% {bytes}/{total_bytes} {bytes_per_sec} elapsed {elapsed_precise}",
        )
        .expect("valid byte progress template")
        .progress_chars("=> "),
    );
    progress.set_message(message);
    progress
}

pub(crate) fn item_progress_bar(len: u64, message: &'static str) -> ProgressBar {
    let progress = ProgressBar::new(len);
    progress.set_style(
        ProgressStyle::with_template(
            "{msg:32} [{bar:40.cyan/blue}] {percent:>3}% {pos}/{len} {per_sec} elapsed {elapsed_precise}",
        )
        .expect("valid item progress template")
        .progress_chars("=> "),
    );
    progress.set_message(message);
    progress
}

pub(crate) fn stage_progress(message: &'static str) -> ProgressBar {
    let progress = ProgressBar::new_spinner();
    progress.set_style(
        ProgressStyle::with_template("{msg:32} {spinner} elapsed {elapsed_precise}")
            .expect("valid stage progress template"),
    );
    progress.set_message(message);
    progress.enable_steady_tick(Duration::from_millis(120));
    progress
}