Teaching myself Rust through the medium of coordinate system transforms and FFI
Transforming coordinates from one coordinate reference system to another is slow, and usually done in bulk, so it’s a great candidate for low-level, multithreaded code, accessed via FFI from higher-level languages to facilitate easy I/O and visualisation. When Rust hit 1.0 last year, I decided to write a library to convert from latitude and longitude coordinates to British National Grid eastings and northings, in order to learn the language. The result is the lonlat_bng crate and the convertbng Python package.
This talk will focus on several areas:
Experiences from learning a systems programming language for someone coming from dynamic languages
Evolving code from single-threaded to multi-threaded, and how to use tests and benchmarks to get there
Comparing the performance of the Crossbeam and Rayon libraries for parallel execution
Using Perfect Hashing for fast access to large (300K+ members) HashMaps
Detecting numerical instability using Herbie, and using Clippy to catch common mistakes and style errors
Implementing generic functions to keep your code clean and DRY-conformant
Writing a lot of docs and examples, so people can get going quickly
Integrating your Rust binary with your dynamic code, and making it available to the rest of the world, including discussion of linking to system libraries, and the intricacies of building cross-platform libraries.
For more go to https://rustfest.eu or follow us on Twitter: https://twitter.com/rustfest
Help us caption & translate this video!