-
Notifications
You must be signed in to change notification settings - Fork 1
Adding Lifetime to Struct
Sewen Thy edited this page Sep 21, 2022
·
3 revisions
Adding lifetime parameters to a struct in Rust requires a lot of changes to be applied correctly to functions and other structs using the updated struct. This example shows a struct Foo that has its fields updated from literal values to references with possibly different lifetimes FooUpdated so the function that initialize Foo: make_foo needs to be updated such that it takes in references of possibly different lifetime to initialize FooUpdated: make_foo_updated.
pub struct Foo {x: i32, y: i32}
pub fn make_foo(x: &i32, y: &i32) -> Foo {
Foo{x: *x, y: *y}
}To change Foo to include possibly different lifetimes, Foo lifetimes need to be annotated:
pub struct FooUpdated<'a, 'b> {x: &'a i32, y: &'b i32}And its initialization function also needs to be annotated and updated:
pub fn make_foo_updated<'a, 'b>(x: &'a i32, y: &'b i32) -> FooUpdated<'a, 'b>{
FooUpdated{x, y}
}