How to convert between mm, cm, meters, kilometers, miles, feet, yards, and inches in Rust

1 Answer

0 votes
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

*/

 



answered Jun 8 by avibootz

Related questions

...