-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Example for simple case of returning Length/Time #33
Comments
I can't seem to edit the issue title, but to be clear, I don't mean length divided by time, but the case of returning either a Length, Time, or some other typed value that I'm not mathematically combining with another. :) Thanks! |
I made an attempt at this. I tried enabling Depending on the definition of use dimensioned::traits::*;
use std::ops::{Add, Mul, Sub};
struct Point<L>
x: L,
y: L,
}
fn distance<L, L2>(p1: &Point<L>, p2: &Point<L>) -> L
where
L: Sub<Output = L> + Mul<Output = L2> + Copy,
L2: Add<Output = L2> + Sqrt<Output = L> + Copy,
{
let dx = p1.x - p2.x;
let dy = p1.y - p2.y;
(dx * dx + dy * dy).sqrt()
} In my own code, I usually just pick a unit system and use its concrete types. So I have a lot of functions that return |
@ndarilek I'm sure you've moved on from this issue at this point but for future users: Here is a more concrete example* of what I suspect @adeschamps was suggesting at the end of his post above:
Or if #74 is merged you could use:
Now in both cases the uses of *I recognize Length divided by Time types weren't actually needed in the OP but it makes for a more interesting example. |
Apologies if this is documented somewhere and I can't find it. I'm trying to write a distance function that currently returns a distance in meters. I'd like to use this crate to add type safety to this return value, with the eventual goal of representing the distance in feet or other units, or combining it with time units to create speeds/velocities.
Your example shows how to write a speed function. Would you mind demonstrating how one might write a distance function? I.e.:
I tried making the
f64
aLength
, but additional type parameters are needed, and if I try braking the build to see what type signature is expected, I get a huge ugly thing that doesn't really give me any clarity. :)Thanks.
The text was updated successfully, but these errors were encountered: