Lifetime in impl blocks

When we create impl blocks for structs with references, we need to repeat the lifetime declarations and definitions again. For instance, if we made an implementation for the struct Foo we defined previously, the syntax would look like this:

// lifetime_impls.rs

#[derive(Debug)]
struct Number<'a> {
num: &'a u8
}

impl<'a> Number<'a> {
fn get_num(&self) -> &'a u8 {
self.num
}
fn set_num(&mut self, new_number: &'a u8) {
self.num = new_number
}
}

fn main() {
let a = 10;
let mut num = Number { num: &a };
num.set_num(&23);
println!("{:?}", num.get_num());
}

In most of these cases, this is inferred from the types themselves and then, we can omit the signatures with <'_> syntax.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset