28 releases (16 stable)

2.0.3 May 30, 2024
2.0.1 Nov 18, 2022
1.0.11 May 19, 2021
1.0.10 Oct 24, 2020
0.6.0 Mar 8, 2020

#207 in Parser implementations

Download history 4/week @ 2024-09-18 5/week @ 2024-09-25 2/week @ 2024-10-02

1,305 downloads per month

MIT license

8.5MB
180K SLoC

C++ 98K SLoC // 0.1% comments Gherkin (Cucumber) 29K SLoC // 0.0% comments JavaScript 10K SLoC // 0.3% comments Rust 5.5K SLoC // 0.0% comments Lua 5K SLoC // 0.1% comments Dart 5K SLoC // 0.1% comments C# 5K SLoC // 0.2% comments Go 4.5K SLoC // 0.1% comments Python 4K SLoC // 0.2% comments PHP 3.5K SLoC // 0.4% comments Java 3K SLoC // 0.3% comments Kotlin 2.5K SLoC // 0.0% comments TypeScript 2K SLoC // 0.5% comments Shell 1K SLoC // 0.4% comments Batch 722 SLoC // 0.1% comments FlatBuffers Schema 508 SLoC // 0.1% comments Bazel 375 SLoC // 0.2% comments C 294 SLoC // 0.2% comments INI 7 SLoC Forge Config 2 SLoC Bitbake 1 SLoC // 0.8% comments

rs_osrm

Crates.io

License: MIT

Rust wrapper for osrm

Requeries that osrm's dependencies is installed

How to use:

  1. Create an EngineConfigBulter, pass path to .osrm file. You may change other settings, see osrm documentation.
  2. Create a request object (ex: NearestRequest) using builder (ex: NearestRequestBuilder)
  3. Call run on the request object and pass in osrm.

Nearest example:

 use crate::{
    engine_config::engine_config_builder::EngineConfigBuilder,
    nearest_api::nearest_request_builder::NearestRequestBuilder, Status,
};

fn main() {
    let osrm_result = EngineConfigBuilder::new("<PATH TO .osrm FILE>")
        .set_use_shared_memory(false)
        .set_algorithm(crate::Algorithm::MLD)
        .build();

    match osrm_result {
        Ok(osrm) => {
            let request = NearestRequestBuilder::new(57.804404, 13.448601)
                .set_number_of_results(3)
                .build();

            match request {
                Ok(mut nearest_request) => {
                    let (status, nearest_result) = nearest_request.run(&osrm);

                    if status == Status::Ok {
                        if nearest_result.code.is_some() {
                            println!("code: {}", nearest_result.code.unwrap());
                        }

                        if nearest_result.waypoints.is_some() {
                            for waypoint in nearest_result.waypoints.unwrap() {
                                println!(
                                    "lat: {}, lon: {}, name: {}",
                                    waypoint.location[1], waypoint.location[0], waypoint.name
                                );
                            }
                        }
                    } else {
                        if nearest_result.code.is_some() {
                            println!("code: {}", nearest_result.code.unwrap());
                        }
                        if nearest_result.message.is_some() {
                            println!("message: {}", nearest_result.message.unwrap());
                        }
                    }
                }
                Err(request_error) => {
                    eprintln!("{request_error}");
                }
            }
        }
        Err(osrm_error) => {
            eprintln!("{osrm_error}");
        }
    }
}


No runtime deps