Advanced 22 min readModule: Module 10: Lifetimes ('a) & Memory Safety
Lifetime Annotations ('a) & Dangling Reference Prevention
Learn how lifetime annotations inform the borrow checker about relationships between reference parameters.
What You Will Learn in This Lesson
- Why lifetimes exist: to ensure references never outlive the data they point to
- Lifetime annotation syntax (&'a str)
- Lifetime elision rules and the 'static lifetime
Introduction & Core Concept
Lifetimes are another kind of generic that ensure references are valid as long as we need them to be. Every reference in Rust has a lifetime.
WHY DOES THIS MATTER IN THE REAL WORLD?
Lifetime annotations do not change how long references live; they describe the relationship between lifetimes of multiple references so the compiler can prove safety.
Longest String with Lifetime Annotation
rustrust
12345678910fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {if x.len() > y.len() { x } else { y }}fn main() {let s1 = "HTML5";let s2 = "TypeScript";let result = longest(s1, s2);println!("Longest: {}", result);}
Line-by-Line Technical Breakdown
1The compiler automatically applies lifetime elision rules for common function patterns.
Try It Yourself (Interactive Editor)
Modify the code in real-time and click Run to test live browser output and console logs.
Intelligent Code Runner & Live Sandbox[RUST]
RUST SOURCE EDITOR
Interactive Live CodeIndustry Best Practices & Professional Standards
- Trust the borrow checker; annotate lifetimes only when returning borrowed references.
Lesson Summary & Core Takeaways
- Lifetimes prevent dangling pointer bugs at compile time.