| Crates.io | valhalla |
| lib.rs | valhalla |
| version | 0.6.7 |
| created_at | 2025-06-26 15:48:54.250702+00 |
| updated_at | 2025-09-04 09:07:24.237524+00 |
| description | Rust bindings for Valhalla routing engine |
| homepage | |
| repository | https://github.com/kinkard/valhalla-rs |
| max_upload_size | |
| id | 1727510 |
| size | 13,884,566 |
C++-to-Rust bindings for Valhalla Routing Engine, powered by cxx.
valhalla-rs provides drop-in infrastructure (cargo add valhalla and you're ready) for utility projects that need to access Valhalla's road graph data, expose additional Valhalla functionality, or benefit from calling Valhalla's routing engine in-process.
valhalla-debug demonstrates this use case.
Features:
DirectedEdge, EdgeInfo) and nodes (NodeInfo) - see tiles_tests for examplesTODOs:
tracing crate or provide an interface for redirecting it to a custom logger.tile_dir (individual file per tile). Currently only tile_extract (single tiles.tar file) is supported.GraphId to the tile file name or writing historical speeds (free flow, congested, 5m bins) to the csv files.Design choices:
valhalla::GraphReader is intended to be as simple as possible and hold no mutable inner state, leaving the caching and other optimizations to the caller. This allows for easy reuse of the same GraphReader instance across multiple threads.valhalla::Actor accepts only proto::Options and not proto::Api or Valhalla JSON request to have small strongly-typed API. Still, there is a convenience method to convert JSON into proto::Options called valhalla::Actor::parse_json_request().valhalla::EdgeInfo::shape direction is aligned with the edge direction. For comparison, in C++ Valhalla user should revert the shape based on DirectedEdge::forward flag (so both forward and reverse edges can use the same EdgeInfo). Because of how C++-to-Rust bindings work, additional allocation is required any way, so it was simpler to just always return the shape in the correct direction.Run cargo add valhalla or add this to your Cargo.toml:
[dependencies]
valhalla = "0.6"
Since Valhalla heavily relies on system libraries, you need to install the following dependencies to build this project:
sudo apt-get update && sudo apt-get install -y --no-install-recommends clang pkg-config build-essential cmake libboost-dev liblz4-dev libprotobuf-dev protobuf-compiler zlib1g-dev
See the Dockerfile for a complete reference setup, or the Valhalla documentation for other platforms.
This project provides Rust bindings for the Valhalla routing engine and distributes (via crates.io) the Valhalla source code. The entire project is licensed under the MIT License.
The original Valhalla license is available at valhalla/COPYING.