3 unstable releases

Uses old Rust 2015

0.3.0 Feb 23, 2018
0.1.1 Oct 16, 2017
0.1.0 Nov 25, 2015

#1 in #riegl

Used in pabst

MIT license

506 lines


Use Riegl's RiVLib via Rust.

Note: This software was not developed by Riegl. Please do not contact Riegl for support related to this software.

To use, you'll need to have RiVLib installed somewhere on your library search path, e.g. /usr/local/lib. You'll also need the headers installed to somewhere on your include file search path, e.g. /usr/local/include.


Underneath the rivlib Rust lib, there are two sub-crates:

  • scanifc-sys uses bindgen to build Rust bindings to RiVLib's C interface, scanifc.
  • scanlib uses a custom C++ wrapper to expose functionality from RiVLib's C++ interface, scanlib. This C++ wrapper must be compiled on your machine when you're building the rivlib crate.


Interface into Riegl's RiVLib.


Use a Reader to extract data from rxp files:

use rivlib::Reader;
let reader = Reader::from_path("data/scan.rxp");

Use .points() to get an iterator over the file's points:

let mut reader = rivlib::Reader::from_path("data/scan.rxp");
let points = reader.points().unwrap().filter_map(|p| p.ok()).collect::<Vec<_>>();

Use .inclinations() to get an iterator over the file's inclination readings:

let mut reader = rivlib::Reader::from_path("data/scan.rxp");
let inclinations = reader.inclinations().unwrap().filter_map(|i| i.ok()).collect::<Vec<_>>();


~41K SLoC