use std::io;
// Conversion functions (all convert *from meters* first)
fn mm_to_meters(mm: f64) -> f64 { return mm / 1000.0; }
fn cm_to_meters(cm: f64) -> f64 { return cm / 100.0; }
fn km_to_meters(km: f64) -> f64 { return km * 1000.0; }
fn miles_to_meters(mi: f64) -> f64 { return mi * 1609.34; }
fn feet_to_meters(ft: f64) -> f64 { return ft * 0.3048; }
fn yards_to_meters(yd: f64) -> f64 { return yd * 0.9144; }
fn inches_to_meters(i: f64) -> f64 { return i * 0.0254; }
// Convert meters → all units
fn to_millimeters(m: f64) -> f64 { return m * 1000.0; }
fn to_centimeters(m: f64) -> f64 { return m * 100.0; }
fn to_kilometers(m: f64) -> f64 { return m / 1000.0; }
fn to_miles(m: f64) -> f64 { return m / 1609.34; }
fn to_feet(m: f64) -> f64 { return m / 0.3048; }
fn to_yards(m: f64) -> f64 { return m / 0.9144; }
fn to_inches(m: f64) -> f64 { return m / 0.0254; }
fn main() {
let mut choice_str: String = String::new();
let mut value_str: String = String::new();
println!("Choose input unit:");
println!("1. Millimeters");
println!("2. Centimeters");
println!("3. Meters");
println!("4. Kilometers");
println!("5. Miles");
println!("6. Feet");
println!("7. Yards");
println!("8. Inches");
print!("Enter choice: ");
let _ = io::Write::flush(&mut std::io::stdout());
io::stdin().read_line(&mut choice_str).unwrap();
let choice: i32 = choice_str.trim().parse().unwrap_or(0);
print!("Enter value: ");
let _ = io::Write::flush(&mut std::io::stdout());
io::stdin().read_line(&mut value_str).unwrap();
let value: f64 = value_str.trim().parse().unwrap_or(0.0);
let meters: f64;
// Convert chosen unit → meters
match choice {
1 => meters = mm_to_meters(value),
2 => meters = cm_to_meters(value),
3 => meters = value,
4 => meters = km_to_meters(value),
5 => meters = miles_to_meters(value),
6 => meters = feet_to_meters(value),
7 => meters = yards_to_meters(value),
8 => meters = inches_to_meters(value),
_ => {
println!("Invalid choice");
return;
}
}
println!("\nConverted from meters ({:.6} m):", meters);
println!("Millimeters: {:.6}", to_millimeters(meters));
println!("Centimeters: {:.6}", to_centimeters(meters));
println!("Meters: {:.6}", meters);
println!("Kilometers: {:.6}", to_kilometers(meters));
println!("Miles: {:.6}", to_miles(meters));
println!("Feet (Foot): {:.6}", to_feet(meters));
println!("Yards: {:.6}", to_yards(meters));
println!("Inches: {:.6}", to_inches(meters));
}
/*
run:
Choose input unit:
1. Millimeters
2. Centimeters
3. Meters
4. Kilometers
5. Miles
6. Feet
7. Yards
8. Inches
Enter choice: 4
Enter value: 1
Converted from meters (1000.000000 m):
Millimeters: 1000000.000000
Centimeters: 100000.000000
Meters: 1000.000000
Kilometers: 1.000000
Miles: 0.621373
Feet (Foot): 3280.839895
Yards: 1093.613298
Inches: 39370.078740
*/