50 releases
0.1.50 | Feb 29, 2024 |
---|---|
0.1.47 | Sep 21, 2023 |
0.1.46 | Jun 1, 2023 |
0.1.44 | Mar 10, 2023 |
0.1.16 | Nov 13, 2020 |
#202 in Algorithms
897 downloads per month
155KB
4K
SLoC
rsc_osrm
Rust wrapper for osrm
Requeries that osrm's dependencies is installed
to link final binary, you need: 0. libosrm.a
- libboost_filesystem.so
- libboost_iostreams.so
- libboost_thread.so
- libboost_system.so
How to use:
- Create an EngineConfig, pass path to .osrm file. You may change other settings, see osrm documentation.
- Create an Osrm via Osrm::new and pass in the config.
- Create a request object (ex: NearestRequest), recomended to always use ::new to get correct default values.
- Call run on the request object and pass in osrm.
Nearest example:
use rsc_osrm::{EngineConfig, Osrm, Algorithm, Status, route::RouteRequest, general::Coordinate};
fn main() {
let mut config = EngineConfig::new("<path to your .osrm file>");
config.use_shared_memory = false;
config.algorithm = Algorithm::MLD;
let osrm = Osrm::new(&mut config).unwrap();
let coords = vec!(Coordinate{latitude:12.98657118,longitude:77.56644753}, Coordinate{latitude:12.97436012,longitude:77.62567071});
let mut request = RouteRequest::new(&coords);
let (status,result) = request.run(&osrm);
match status{
Status::Ok => {
let route0 = &result.routes[0];
println!("eta: {}, eda: {}, geometry: {}",route0.duration, route0.distance, (route0.geometry).as_ref().unwrap());
}
_ => println!("call osrm failed"),
}
}
No runtime deps
~0–325KB