28个版本 (16个稳定版本)

2.0.3 2024年5月30日
2.0.1 2022年11月18日
1.0.11 2021年5月19日
1.0.10 2020年10月24日
0.6.0 2020年3月8日

#284 in 解析器实现

Download history 230/week @ 2024-05-27 14/week @ 2024-06-03 13/week @ 2024-06-10 91/week @ 2024-07-01 118/week @ 2024-07-29

每月118次下载

MIT 许可证

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对osrm的封装

需要已安装osrm的依赖项

如何使用

  1. 创建一个EngineConfigBulter,传递.osrm文件的路径。您可以更改其他设置,请参阅osrm文档。
  2. 使用构建器(例如NearestRequestBuilder)创建请求对象(例如NearestRequest)。
  3. 在请求对象上调用run,并传递osrm。

最近示例

 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}");
        }
    }
}


无运行时依赖项