Why we need lifetime annotation in a struct?
Because when you put a temporary borrow inside a struct, the struct as a whole becomes temporary. If it didn't, it could end up referencing something after it's gone (that's a dangling pointer, and...
users.rust-lang.org