Benji Flaming

Getting Rusty: Introducing the "bangle" and "identify" crates

I’ve been programming almost exclusively in Rust for the past 3 years, with occasional forays into C++, Python, Ruby, C, and Bash, as the need arises. Throughout that time, I’ve frequently benefited from the rich ecosystem of open source libraries called “crates”, which allow me to avoid having to solve programming problems for which well-respected solutions have already been created and tested.

Over the past few days, I’ve finally released (and updated) two crates of my own: bangle and identify.

bangle

The bangle crate provides strongly-typed floating point angles, specified in radians, degrees, rotations, or percentages, with efficient and ergonomic conversion between units. Both f32 and f64 numeric types are supported, with f32 being the implicit default. All conversions, for each unit and numeric type, are covered by tests, and the library has no runtime dependencies and is fully no_std compatible. bangle is especially intended for situations where code clarity may be enhanced by specifying or modifying angles in units other than radians.

identify

The identify crate provides strongly-typed UUIDs, statically associated with other types. This can simplify architecture and implementation, while enhancing type safety and referential integrity, in systems where data sets are being manipulated asynchronously across multiple threads and/or physical locations.

(Archived blog post from 2025-06-11)

Where to next?

View the previous blog post
Browse all blog posts
View a random blog post
Follow and support my work
Visit the homepage

Copyright © 1998-2024 Benjamin Flaming
All rights reserved.
This website does not use cookies.
Some 3rd-party music or video players
used here may set their own cookies.