1
0
Fork 0
mirror of https://github.com/notohh/rustlings.git synced 2024-12-21 16:08:09 -05:00
rustlings/exercises/16_lifetimes/README.md

23 lines
998 B
Markdown
Raw Normal View History

2022-07-15 08:01:32 -04:00
# Lifetimes
Lifetimes tell the compiler how to check whether references live long
enough to be valid in any given situation. For example lifetimes say
"make sure parameter 'a' lives as long as parameter 'b' so that the return
2023-03-31 05:20:11 -04:00
value is valid".
2022-07-15 08:01:32 -04:00
2023-03-31 05:20:11 -04:00
They are only necessary on borrows, i.e. references,
2022-07-15 08:01:32 -04:00
since copied parameters or moves are owned in their scope and cannot
be referenced outside. Lifetimes mean that calling code of e.g. functions
2023-03-31 05:20:11 -04:00
can be checked to make sure their arguments are valid. Lifetimes are
2022-07-15 08:01:32 -04:00
restrictive of their callers.
2023-03-31 05:20:11 -04:00
If you'd like to learn more about lifetime annotations, the
[lifetimekata](https://tfpk.github.io/lifetimekata/) project
has a similar style of exercises to Rustlings, but is all about
learning to write lifetime annotations.
2022-07-15 08:01:32 -04:00
## Further information
- [Lifetimes (in Rust By Example)](https://doc.rust-lang.org/stable/rust-by-example/scope/lifetime.html)
- [Validating References with Lifetimes](https://doc.rust-lang.org/book/ch10-03-lifetime-syntax.html)