#![cfg_attr(feature="unstable", feature(unboxed_closures, core, zero_one))]
#[macro_use] extern crate units;
pub mod my_units {
units! {
MyUnits {
Meter[m],
Second[s],
Mile[mile]
}
}
}
use my_units::f64::{one, m, s, mile};
#[cfg(not(feature = "unstable"))]
fn main() {
let km = 1000.*m; let h = 60.*60.*s;
let initial_speed = 0.*km/h;
let final_speed = 100.*km/h;
let time = 12.*s;
let acceleration = (final_speed - initial_speed)/time;
let result = 0.5 * acceleration * time * time; println!("{:?}", result);
let meter_per_mile = 1609.344*m/mile; let result_in_miles = result / meter_per_mile; println!("{} miles", *(result_in_miles/mile));
let height = 1.5*m;
let g = 9.81*m/s/s; let time = (2. * height / g).sqrt(); let ms = 0.001*s; println!("The ball falls for {:.2} ms until it hits the ground.", *(time/ms));
}
#[cfg(feature = "unstable")]
fn main() {
let km = m(1000.); let h = s(60. * 60.);
let initial_speed = (km/h)(0.);
let final_speed = (km/h)(100.);
let time = s(12.);
let acceleration = (final_speed - initial_speed)/time;
let result = one(0.5) * acceleration * time * time; println!("{:?}", result);
let meter_per_mile = (m/mile)(1609.344); let result_in_miles = result / meter_per_mile; println!("{} miles", *(result_in_miles/mile));
let height = m(1.5);
let g = (m/s/s)(9.81); let time = (one(2.) * height / g).sqrt(); let ms = s(0.001); println!("The ball falls for {:.2} ms until it hits the ground.", *(time/ms));
}