Old Russian measure of length: Difference between revisions

Added Rust.
(Added Rust.)
Line 1,793:
centimeter : 10000
meter : 100
</pre>
 
=={{header|Rust}}==
Run as:
:<code>commandname <value> <unit></code>
 
<lang rust>use std::env;
use std::process;
use std::collections::HashMap;
 
fn main() {
 
let units: HashMap<&str, f32> = [("arshin",0.7112),("centimeter",0.01),("diuym",0.0254),("fut",0.3048),("kilometer",1000.0),("liniya",0.00254),("meter",1.0),("milia",7467.6),("piad",0.1778),("sazhen",2.1336),("tochka",0.000254),("vershok",0.04445),("versta",1066.8)].iter().cloned().collect();
 
let args: Vec<String> = env::args().collect();
if args.len() < 3 {
eprintln!("A correct use is oldrus [amount] [unit].");
process::exit(1);
};
 
let length_float;
length_float = match args[1].parse::<f32>() {
Ok(length_float) => length_float,
Err(..) => 1 as f32,
};
 
let unit: &str = &args[2];
if ! units.contains_key(unit) {
let mut keys: Vec<&str> = Vec::new();
for i in units.keys() {
keys.push(i)
};
eprintln!("The correct units are: {}.", keys.join(", "));
process::exit(1);
};
 
println!("{} {} to:", length_float, unit);
for (lunit, length) in &units {
println!(" {}: {:?}", lunit, length_float * units.get(unit).unwrap() / length);
};
 
 
}
</lang>
<pre>
$ ./oldrus test
A correct use is oldrus [amount] [unit].
$ ./oldrus test test
The correct units are: meter, sazhen, vershok, fut, diuym, kilometer, tochka, arshin, liniya, piad, versta, milia, centimeter.
$ ./oldrus 1 meter
1 meter to:
kilometer: 0.001
liniya: 393.70078
diuym: 39.37008
centimeter: 100.0
fut: 3.28084
arshin: 1.4060743
piad: 5.624297
tochka: 3937.0076
versta: 0.0009373828
meter: 1.0
sazhen: 0.4686914
vershok: 22.497189
milia: 0.00013391183
$ ./oldrus 5 versta
5 versta to:
versta: 5.0
arshin: 7500.0
kilometer: 5.334
diuym: 210000.0
centimeter: 533400.0
sazhen: 2500.0
liniya: 2100000.0
piad: 30000.0
tochka: 20999998.0
vershok: 120000.0
fut: 17500.0
milia: 0.71428573
meter: 5334.0
</pre>
 
Anonymous user