0
0
Rustprogramming~5 mins

Lifetimes in functions in Rust - Cheat Sheet & Quick Revision

Choose your learning style9 modes available
Recall & Review
beginner
What is a lifetime in Rust?
A lifetime is a way Rust keeps track of how long references are valid to prevent dangling pointers and ensure memory safety.
Click to reveal answer
intermediate
Why do functions sometimes need explicit lifetime annotations?
Because Rust needs help to understand how the lifetimes of input references relate to the output references, ensuring safe borrowing.
Click to reveal answer
beginner
What does the syntax &'a str mean in a function parameter?
It means the function takes a string slice reference that lives at least as long as the lifetime 'a, which is a named lifetime parameter.
Click to reveal answer
intermediate
Explain this function signature: fn longest<'a>(x: &'a str, y: &'a str) -> &'a str
It means the function takes two string slices that live at least as long as 'a and returns a string slice that also lives at least as long as 'a, tying input and output lifetimes together.
Click to reveal answer
intermediate
What happens if you omit lifetime annotations in a function with multiple references?
Rust may give a compile error because it can't infer how the lifetimes relate, so you need to add explicit lifetime annotations to clarify.
Click to reveal answer
What is the main purpose of lifetimes in Rust functions?
ATo allocate memory on the heap
BTo speed up the program execution
CTo ensure references do not outlive the data they point to
DTo define variable types
In the function signature fn foo<'a>(x: &'a i32) -> &'a i32, what does 'a represent?
AA named lifetime parameter linking input and output lifetimes
BA generic type parameter
CA variable name
DA constant value
If a function returns a reference to one of its input parameters, what must you do?
AUse the <code>mut</code> keyword
BAdd lifetime annotations to link input and output lifetimes
CReturn an owned value instead
DNothing, Rust infers it automatically always
What error might you see if you forget lifetime annotations in a function with multiple references?
AMissing lifetime specifier error
BType mismatch error
CSyntax error
DStack overflow
Which of these is a valid lifetime annotation in a function signature?
Afn example(x: str<'a>) -> str<'a>
Bfn example(x: &str) -> &str<'a>
Cfn example<'a>(x: str) -> str
Dfn example<'a>(x: &'a str) -> &'a str
Explain why Rust requires lifetime annotations in some function signatures and how they help with memory safety.
Think about how Rust prevents dangling references.
You got /3 concepts.
    Describe the meaning of this function signature: fn longest<'a>(x: &'a str, y: &'a str) -> &'a str.
    Focus on how the lifetime 'a connects inputs and output.
    You got /3 concepts.