The most straightforward of the standard smart pointers is the Box. A Box does what we've been discussing so far: it stores a data value on the heap, while ensuring that it still follows the lifetime rules as if it were actually part of the Box value itself.
Here's an example. First, we'll create a data type for the data we want to store on the heap:
pub struct Person {
pub name: String,
pub validated: bool,
}
Now, creating and using the Box itself is easy:
let jack = Box::new(Person { name: "Jack".to_string(), validated: true });
let x = &jack.name;
println!("The person in the box is {}", x);
The first line creates a Box. We have to give it a data value to store, because one thing Rust is not okay with is an empty Box, so we initialize a Person object and pass it to the function, which creates a new Box to be used as its internal...