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)
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.