pub mod all_oper{
pub mod arith_oper{
fn add_values(num1:i16,num2:i16)->i16{
num1+num2
}
fn sub_values(num1:i16,num2:i16)->i16{
num1-num2
}
fn mul_values(num1:i16,num2:i16)->i16{
num1*num2
}
pub fn perform_arith_op(num1:i16,num2:i16){
println!("\n{}+{}={}",num1,num2,add_values(num1,num2));
println!("\n{}-{}={}",num1,num2,sub_values(num1,num2));
println!("\n{}*{}={}",num1,num2,mul_values(num1,num2));
}
}
pub mod num_oper{
pub fn factorial(num:u8)->u32{
let mut f:u32=1;
for i in 2..num+1{
f*=i as u32;
}
f
}
pub fn is_prime(num: i16) -> bool {
let mut prime_num: bool = true;
for i in 2..num {
if num%i == 0 {
prime_num = false;
break;
}
}
prime_num
}
}
pub mod string_oper {
pub fn is_palindrome(str_val: &str) -> bool {
let st: Vec<char> = str_val.chars().collect();
let mut palind = true;
let mut n = st.len()-1;
let mut i = 0;
while i<n {
if st[i].to_ascii_lowercase() != st[n].to_ascii_lowercase() {
palind = false;
break;
}
i += 1;
n -= 1;
}
palind
}
}
}