fn main() { let mut a_str: String = Default::default(); let mut power_str: String = Default::default(); println!("Введите число: "); std::io::stdin().read_line(&mut a_str).expect("Ошибка ввода"); println!("\nВведите степень: "); std::io::stdin().read_line(&mut power_str).expect("Ошибка ввода"); let a: i32 = a_str.trim().parse().unwrap(); let n: i32 = power_str.trim().parse().unwrap(); let res = power(a, n); println!("{:?}", res); } fn power(a: i32, n: i32) -> i32 { // запись при помощи match (аналог switch-case в Rust) // немного лаконичнее if...else, в остальном преимуществ // в данном случае нет match n { 0 => 1, _ => match n % 2 { 0 => i32::pow( power(a, n/2), 2 ), _ => a * power(a, n-1), } } }