WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Rust · Basic · question 8 of 100

Explain the differences between Option and Result enums in Rust.?

📕 Buy this interview preparation book: 100 Rust questions & answers — PDF + EPUB for $5

In Rust, both Option and Result are commonly used enums for handling errors and representing null or "empty" values, but there are some fundamental differences between them.

Option: Option is used when a value may or may not exist. It represents either Some(T), where T is the value of the option, or None, which represents no value. This enum is useful when working with functions that may not always return an actual value.

Let’s take an example of a function that finds the first occurrence of a number in a vector:

    fn find_first(v: Vec<i32>, n: i32) -> Option<usize> {
        for (i, item) in v.iter().enumerate() {
            if *item == n {
                return Some(i);
            }
        }
        None
    }

Here, the find_first function returns the index of the first occurrence of a given number in a vector. However, if the number is not found, None is returned. In this case, the return type of the function is an Option<usize> because there may or may not be a valid index.

Result: Result is used when a function may return either a value or an error. It has two variants: Ok(T) if the operation succeeded and the value is returned, and Err(E) if the operation failed and returns an error. The error is usually of the type Result<T, E>, where T is the type of the value returned by the operation, and E is the type of the error.

Let’s take an example of a function that divides two numbers:

    fn divide(a: i32, b: i32) -> Result<i32, &'static str> {
        if b == 0 {
            return Err("Cannot divide by 0");
        }
        Ok(a / b)
    }

Here, the divide function returns a Result<i32, &str> because dividing by 0 is not allowed and should result in an error. If the division operation is successful, the function returns Ok with the result. However, if the operation failed, the function returns Err with an error message.

In summary, Option is used for values that may or may not exist, while Result is used for operations that may succeed or fail with an error message. Both enums are useful in handling errors and in representing null or empty values, and should be used appropriately depending on the context of your program.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Rust interview — then scores it.
📞 Practice Rust — free 15 min
📕 Buy this interview preparation book: 100 Rust questions & answers — PDF + EPUB for $5

All 100 Rust questions · All topics