1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2024-12-04 03:25:08 +02:00

Add speaker notes to lifetimes-function-calls.md

This commit is contained in:
Fabian Bornhofen 2023-01-09 16:27:10 +01:00
parent 3ff2d5f43a
commit 597c875442

View File

@ -12,7 +12,7 @@ fn left_most<'a>(p1: &'a Point, p2: &'a Point) -> &'a Point {
fn main() {
let p1: Point = Point(10, 10);
let p2: Point = Point(20, 20); // Put into different scope
let p2: Point = Point(20, 20);
let p3: &Point = left_most(&p1, &p2);
println!("left-most point: {:?}", p3);
}
@ -23,3 +23,12 @@ fn main() {
* Read `&'a Point` as "a borrowed `Point` which is valid for at least the
lifetime `a`".
* The _at least_ part is important when parameters are in different scopes.
<details>
In the above example, try the following:
* Move the declaration of `p2` and `p3` into a a new scope (`{ ... }`). You have to declare `p3` as `let p3: &Point;`, in `main`'s scope before that new block. Note how this does not compile since `p3` outlives `p2`.
* Reset the workspace and change the function signature to `fn left_most<'a, 'b>(p1: &'a Point, p2: &'a Point) -> &'b Point`. This will not compile because the relationship between the lifetimes `'a` and `'b` is unclear.
</details>