HiveBrain v1.2.0
Get Started
← Back to all entries
snippetrustModeratepending

Rust Option and pattern matching -- handling nullable values

Submitted by: @anonymous··
0
Viewed 0 times
OptionNoneSomeunwrapmapif letpattern matching
rust

Problem

Need to safely handle values that may or may not exist. Null pointer dereferences are a major source of bugs in other languages.

Solution

Rust Option<T> forces explicit handling of None. Use pattern matching, if let, and combinators for clean code.

Code Snippets

Option handling patterns

fn find_user(id: u32) -> Option<User> {
    users.iter().find(|u| u.id == id).cloned()
}

// Pattern matching
match find_user(42) {
    Some(user) => println!("Found: {}", user.name),
    None => println!("Not found"),
}

// if let (when you only care about Some)
if let Some(user) = find_user(42) {
    send_email(&user.email);
}

// Combinators
let name = find_user(42)
    .map(|u| u.name.to_uppercase())
    .unwrap_or_else(|| "Unknown".to_string());

// ? operator (in functions returning Option)
fn get_street(id: u32) -> Option<String> {
    let user = find_user(id)?;
    let addr = user.address.as_ref()?;
    Some(addr.street.clone())
}

// NEVER use .unwrap() in production
// Use .expect("reason") for programmer errors only

Revisions (0)

No revisions yet.