Back to all reviewers

Handle nulls with Option

astral-sh/ruff
Based on 6 comments
Rust

Use Rust's Option type and its methods effectively to handle nullable values. This improves code clarity and safety by making null cases explicit and leveraging the type system.

Null Handling Rust

Reviewer Prompt

Use Rust’s Option type and its methods effectively to handle nullable values. This improves code clarity and safety by making null cases explicit and leveraging the type system.

Key practices:

  1. Prefer Option over tuple/primitive returns for nullable values
  2. Use appropriate Option methods:
    • unwrap_or_default() for default values
    • expect() with descriptive messages for cases that shouldn’t be null
    • is_some_and() for conditional checks
  3. Remove redundant null checks when Option already provides the safety

Example - Before:

// Using tuple return
fn is_pragma_comment(comment: &str) -> (bool, usize) {
    // Returns (is_pragma, offset)
    if comment.contains("pragma") {
        (true, comment.find("pragma").unwrap_or(0))
    } else {
        (false, 0)
    }
}

After:

// Using Option for clearer semantics
fn is_pragma_comment(comment: &str) -> Option<usize> {
    // Returns offset if comment is pragma, None otherwise
    comment.contains("pragma").then(|| {
        comment.find("pragma").expect("pragma exists")
    })
}

// Usage with appropriate Option methods
let offset = is_pragma_comment(comment)
    .unwrap_or_default();  // Use default when None

This approach:

  • Makes null cases explicit in the type system
  • Reduces error-prone manual null checking
  • Provides clear, chainable operations for handling null cases
  • Improves code readability and maintainability
6
Comments Analyzed
Rust
Primary Language
Null Handling
Category

Source Discussions