commit
8d0b937964
@ -81,7 +81,6 @@ therefore deallocates the memory for you. Here's the equivalent example in
|
|||||||
Rust:
|
Rust:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
# use std::boxed::Box;
|
|
||||||
{
|
{
|
||||||
let x = Box::new(5);
|
let x = Box::new(5);
|
||||||
}
|
}
|
||||||
@ -101,7 +100,6 @@ This is pretty straightforward, but what happens when we want to pass our box
|
|||||||
to a function? Let's look at some code:
|
to a function? Let's look at some code:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
# use std::boxed::Box;
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = Box::new(5);
|
let x = Box::new(5);
|
||||||
|
|
||||||
@ -117,7 +115,6 @@ This code works, but it's not ideal. For example, let's add one more line of
|
|||||||
code, where we print out the value of `x`:
|
code, where we print out the value of `x`:
|
||||||
|
|
||||||
```{rust,ignore}
|
```{rust,ignore}
|
||||||
# use std::boxed::Box;
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = Box::new(5);
|
let x = Box::new(5);
|
||||||
|
|
||||||
@ -151,7 +148,6 @@ To fix this, we can have `add_one` give ownership back when it's done with the
|
|||||||
box:
|
box:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
# use std::boxed::Box;
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = Box::new(5);
|
let x = Box::new(5);
|
||||||
|
|
||||||
@ -207,6 +203,26 @@ fn add_one(num: &mut i32) {
|
|||||||
This function borrows an `i32` from its caller, and then increments it. When
|
This function borrows an `i32` from its caller, and then increments it. When
|
||||||
the function is over, and `num` goes out of scope, the borrow is over.
|
the function is over, and `num` goes out of scope, the borrow is over.
|
||||||
|
|
||||||
|
We have to change our `main` a bit too:
|
||||||
|
|
||||||
|
```rust
|
||||||
|
fn main() {
|
||||||
|
let mut x = 5;
|
||||||
|
|
||||||
|
add_one(&mut x);
|
||||||
|
|
||||||
|
println!("{}", x);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn add_one(num: &mut i32) {
|
||||||
|
*num += 1;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
We don't need to assign the result of `add_one()` anymore, because it doesn't
|
||||||
|
return anything anymore. This is because we're not passing ownership back,
|
||||||
|
since we just borrow, not take ownership.
|
||||||
|
|
||||||
# Lifetimes
|
# Lifetimes
|
||||||
|
|
||||||
Lending out a reference to a resource that someone else owns can be
|
Lending out a reference to a resource that someone else owns can be
|
||||||
|
Loading…
x
Reference in New Issue
Block a user