O'Reilly logo

Rust Essentials - Second Edition by Ivo Balbaert

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Lifetimes

All variables in Rust code have a lifetime, which is the area of code in which the variable is defined. Suppose we declare a variable n with the binding let n = 42u32; Such a value is valid from where it is declared to when it is no longer referenced; its lifetime ends there. This is illustrated in the following code snippet:

// see code in Chapter 7/code/lifetimes.rs    
fn main() { 
    let n = 42u32; 
    let n2 = n; // a copy of the value from n to n2 
    println!("The value of n2 is {}, the same as n", n2); 
    let p = life(n); 
    println!("p is: {}", p); // p is: 42 
    println!("{}", m);  // error: unresolved name `m`. 
    println!("{}", o);  // error: unresolved name `o`. 
} 
 
fn life(m: u32) -> u32 { 
    let o = m; 
    o 
} 

The lifetime of n ends when the main() function ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required