Lifetime Reference
Sat, Oct 31, 2015Places in Rust where you use any lifetime syntax will fall into two categories:
Concept | Category | Usage |
---|---|---|
fn |
creation | fn example_function<'a>() |
struct |
creation | struct Example<'a> |
enum |
creation | enum Test<'a> |
impl |
creation | impl<'a> Example<'a> |
struct |
reference | some_field: Example<'a> |
enum |
reference | some_field: Test<'a> |
& |
reference | next_field: &'a i32 |
&mut |
reference | next_field: &'a mut i32 |
Box |
reference | last_field: Box<i32 + 'a> |
What does ‘Category’ mean?
When I say ‘creation’ I mean this is where the lifetime is first defined and named.
When I say ‘reference’ I mean this is where we are being explicit about the lifetime of some reference type, using a lifetime that already exists.
This is an important distinction that took me a while to get.
Weird things
Yes, we see you
Box
, we’re ignoring you.Notice that ‘struct’ and ‘enum’ are in both categories. That’s because they use pretty much the same syntax for creation as they do for reference; it’s helpful to acknowledge that.
More
I go into more detail about lifetimes here.