iliekturtles / uom

Units of measurement -- type-safe zero-cost dimensional analysis

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Unable to `clamp` quantity to a range.

DJDuque opened this issue · comments

I am not sure if this is the expected behavior, but the following fails for me (I would expect it to work):

use uom::si::angle::radian;
use uom::si::f64::Angle;

fn main() {
    let x = Angle::new::<radian>(5.0);
    let clamped = x.clamp(-Angle::HALF_TURN, Angle::HALF_TURN);
}

I am not very familiar with the code under the hood, but looking here it looks like this should work (?).

Ok, I just noticed that what I linked requires V (in this case f64) to implement the Ord trait. Now I understand why it doesn't work.

Maybe it is worth adding this as a separate method (?) given that the clamp method does exist for f64. Maybe it could be useful for some people

Closing as a duplicate of #239. There is a draft PR in #377 but it hasn't gotten past the draft stage unfortunately.