Reference correct fn during lifetime ellision
This commit is contained in:
parent
5d2056a7e3
commit
42cbd7a9bd
1 changed files with 8 additions and 8 deletions
|
@ -244,8 +244,8 @@ three. The ownership system in Rust does this through a concept called
|
||||||
Remember the function that borrowed an `i32`? Let's look at it again.
|
Remember the function that borrowed an `i32`? Let's look at it again.
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
fn add_one(num: &i32) -> i32 {
|
fn add_one(num: &mut i32) {
|
||||||
*num + 1
|
*num += 1;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -255,8 +255,8 @@ cover the others later. Without eliding the lifetimes, `add_one` looks like
|
||||||
this:
|
this:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
fn add_one<'a>(num: &'a i32) -> i32 {
|
fn add_one<'a>(num: &'a mut i32) {
|
||||||
*num + 1
|
*num += 1;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -278,12 +278,12 @@ fn add_two<'a, 'b>(...)
|
||||||
Then in our parameter list, we use the lifetimes we've named:
|
Then in our parameter list, we use the lifetimes we've named:
|
||||||
|
|
||||||
```{rust,ignore}
|
```{rust,ignore}
|
||||||
...(num: &'a i32) -> ...
|
...(num: &'a mut i32)
|
||||||
```
|
```
|
||||||
|
|
||||||
If you compare `&i32` to `&'a i32`, they're the same, it's just that the
|
If you compare `&mut i32` to `&'a mut i32`, they're the same, it's just that the
|
||||||
lifetime `'a` has snuck in between the `&` and the `i32`. We read `&i32` as "a
|
lifetime `'a` has snuck in between the `&` and the `mut i32`. We read `&mut i32` as "a
|
||||||
reference to an i32" and `&'a i32` as "a reference to an i32 with the lifetime 'a.'"
|
mutable reference to an i32" and `&'a mut i32` as "a mutable reference to an i32 with the lifetime 'a.'"
|
||||||
|
|
||||||
Why do lifetimes matter? Well, for example, here's some code:
|
Why do lifetimes matter? Well, for example, here's some code:
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue