libosmium

Crates.iolibosmium
lib.rslibosmium
version0.3.1
sourcesrc
created_at2022-08-05 13:22:35.409174
updated_at2022-12-30 16:27:00.014278
descriptionRust binding and wrapper for libosmium
homepagehttps://github.com/gammelalf/libosmium
repositoryhttps://github.com/gammelalf/libosmium
max_upload_size
id639350
size1,726,105
(gammelalf)

documentation

README

Libosmium

Rust binding and wrapper around the excellent libosmium c++ library.

Maintenance

This crate was started out of necessity for a larger project. Therefore, it won't get much attention unless I need another feature or find a bug. But feel free to contribute.

What it does

This crate exposes libosmium's osm object classes (i.e. OSMObject, Node, Way, etc.) and the Handler interface to read those from a file (currently only .pbf).

Since libosmium has its own memory management, all objects are only exposed via references. So most of the types on rust's side are empty enums which can't be instantiated.

To expose these c++ classes' methods, this crate uses a small c++ shim (namely src/libosmium.cpp) which reexports them as un-mangled functions taking pointers. Methods whose behaviour is trivial enough are simply implemented directly in rust to avoid unnecessary boilerplate.

Build dependencies

This package builds libosmium and therefore needs its dependencies.

Install for debian:

apt install build-essential libboost-dev libprotozero-dev zlib1g-dev

Install for arch:

pacman -Sy cmake make boost-libs protozero zlib
Commit count: 30

cargo fmt