Interior mutability

Interior mutability is a concept granting mutable an inner value of a type with an immutable reference. Is this safe to do? Yes, totally, because we need to respect certain constraints. One way to have interior mutability is to wrap our Cell type. The constraint of this type is that if we want to get the value from the Cell from an immutable reference, the wrapped type must implement the Copy trait. We'll see the other commonly-used type for interior mutability later in this chapter. For now, let's add our field to the Player type:

use std::cell::Cell;

pub struct Player {
    app_state: Arc<Mutex<super::State>>,
    event_loop: EventLoop,
    paused: Cell<bool>,
}

Let's update the construction of the structure:

impl Player {
    pub

Get Rust Programming By Example now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.