DeveloperBreeze

Rust Programming Tutorials, Guides & Best Practices

Explore 4+ expertly crafted rust tutorials, components, and code examples. Stay productive and build faster with proven implementation strategies and design patterns from DeveloperBreeze.

Advanced Memory Management in Rust: Understanding Ownership, Borrowing, and Lifetimes

Tutorial August 27, 2024
rust

fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
    if x.len() > y.len() {
        x
    } else {
        y
    }
}

fn main() {
    let string1 = String::from("long string is long");
    let result;
    {
        let string2 = String::from("xyz");
        result = longest(string1.as_str(), string2.as_str());
    }
    // println!("The longest string is {}", result); // Error: string2 no longer exists
}
  • Lifetimes specify how long references are valid.
  • Lifetime annotations are required when the lifetimes of references are not obvious.
  • Lifetimes prevent references from outliving the data they point to.