p_rust 0.1.0

My rust practice
Documentation
use std::io;
use std::mem::replace;
use std::time::Instant;
use num_bigint::BigUint;
use num_traits::{Zero, One};

fn get_nth_fibonacci_input() -> usize {
    loop {
        let mut nth_input_str = String::new();
        println!("Enter nth fibonacci number:");
        io::stdin()
            .read_line(&mut nth_input_str)
            .expect("Failed to read line");
        match nth_input_str.trim().parse() {
            Ok(input_number) => {
                if input_number < 1 {
                    println!("The nth fibonacci number must be greater than 0.");
                } else {
                    break input_number;
                }
            },
            Err(_) => println!("Invalid nth fibonacci number: {}", nth_input_str)
        }
    }
}

fn main() {
    let nth_fibonacci_input = get_nth_fibonacci_input();

    let start = Instant::now();
    let mut last: BigUint = Zero::zero();
    let mut result: BigUint = One::one();
    for _ in 1..nth_fibonacci_input {
        let next_result = last + &result;
        last = replace(&mut result, next_result);

        // let next_result: usize = result + last;
        // last = result;
        // result = next_result;
    }
    let elapsed = start.elapsed();

    println!("The fibonacci number is: {}", result);
    println!("Calculation took: {} micro seconds", elapsed.as_micros());
}