用 Rust 编写一个温度转换程序

感想

不得不说,rust 的规矩真是多~~,这不行那不行,可能就只剩下安全了。

代码

use std::io;
fn main() {
    println!("Conversion between f and c");
    println!("Please enter like this : 3f or 32.5c");
    println!("Type Ctrl + C to quit.");
    
    loop {
        println!("-------------");
        let mut enter = String::new();
        io::stdin().read_line(&mut enter).
            expect("Faild to read");
        let enter = enter.trim();
        let len  = enter.len() as usize;

//        println!("len is {:?}", len);
        let number = &enter[0..len-1];
//        println!("The number is {:?}", number);
        let number = match number.trim().parse() {
            Ok(x) => x,
            Err(_) => {
                println!("Please enter right format!");
                continue;
            }
        };
//        println!("number is {:?}", number);
        let c = match enter.chars().nth(len-1) {
            Some(x) => x,
            None => panic!(),
        };
//        println!("c is {:?}", c);
        match c  {
            'c' => { 
//                println!("c2f(number) is {}", c2f(number));
                let result = c2f(number).to_string() + "f";
                println!("The {} is {}", enter, result);
            }
            'f' => {
                let result = f2c(number).to_string() + "c";
                println!("The {} is {}", enter, result);
            }
            _ => {
                println!("Please enter right format!");
                continue;
            }
        }
        
    }
}

fn c2f(x:f64) -> f64 {
    32.0 + x * 1.8
}

fn f2c(x:f64) -> f64 {
    (x - 32.0)/1.8
}