use std::env;
use std::io;
mod lib;
fn main() {
let args: Vec<String> = env::args().collect();
if args.len() > 1 {
dbg!("TERMINAL MODE");
print!("开始计算命令行输入数字对应的斐波那契数列值");
let args = match get_args(&args) {
Ok(l) => l,
Err(_) => Vec::new(),
};
for arg in args {
let arg: u8 = arg
.trim()
.parse()
.expect("Cannot exchange nums from terminal input into u8");
println!("{}", lib::lib_fibonacci::kernel(arg).fib_value);
}
} else {
dbg!("CLI MODE");
loop {
let input_char = get_input();
let input_char: u8 = match input_char.trim().parse() {
Ok(num) => num,
Err(_) => {
println!("请输入在0-180之内的无符号数字!");
13
}
};
if input_char == 13 {
break;
}
println!("{}", lib::lib_fibonacci::kernel(input_char).fib_value);
}
}
}
fn get_args(args: &Vec<String>) -> Result<Vec<String>, &'static str> {
if args.len() < 2 {
return Err("Need More Options");
}
let mut other_keyboard_inputs = Vec::new();
let mut index = 0;
for item in args {
if index < 1 {
index += 1;
continue;
}
other_keyboard_inputs.push(item.clone());
}
Ok(other_keyboard_inputs)
}
fn get_input() -> String {
println!("This is a programme aim to calculate Fibonacci sequence");
let mut input_char: String = String::new();
io::stdin()
.read_line(&mut input_char)
.expect("Eorror Occurred");
input_char
}