## prime_checker ### Instructions Create a **function** `prime_checker` that takes an `u32` and check if it is a prime number. The result will be `None` if the argument is less or equal one, otherwise it will return a `Result`. If the `u32` is prime, the function will return an`Ok(u32)`. For any other case it will return an `enum` `PrimeErr`. The `enum` `PrimeErr` will be `Even` if the number is a multiple of two or `Divider(u32)` where the `u32` is the smallest divider of the number. > Your solution should be optimized to a certain degree. ### Expected Function and structure ```rust #[derive(PartialEq, Eq, Debug)] pub enum PrimeErr { Even, Divider(u32), } pub fn prime_checker(nb: u32) -> /* Implement return type here */ {} ``` ### Usage Here is a program to test your function: ```rust use prime_checker::*; fn main() { println!("Is {} prime? {:?}", 2, prime_checker(2)); println!("Is {} prime? {:?}", 14, prime_checker(14)); println!("Is {} prime? {:?}", 2147483647, prime_checker(2147483647)); } ``` And its output: ```console $ cargo run Is 2 prime? Some(Ok(2)) Is 14 prime? Some(Err(Even)) Is 2147483647 prime? Some(Ok(2147483647)) $ ```