Borrow-checking with friends

#[derive(Debug)]
enum D3 { One, Two, Three }
impl D3 {
    fn peek(self: &D3, name: &str) {
        println!("{} sees that it's {:?}.", name, self);
    }
}

Our main character, named Max, has a d3.

fn main() {
    print!("Hi, I'm Max. ");
    let mut die = D3::Two;
    die.peek("Max");

Max can rolls his die:

die = D3::One;
die.peek("Max");

Max invites Alice and Bob over for a game of dice. The die is on the table and everyone can see what it's showing.

'table: loop {
    let bob = ¨
    bob.peek("Bob");
    die.peek("Everyone"); // same thing
    break 'table; // that's enough peeking for now
}

It's Alice's turn, she picks up the die and rolls.

'alices_turn: loop {
    let alice = &mut die;
    *alice = D3::Three;
    alice.peek("Alice");
    break 'alices_turn;
}

It lands on the table and now everyone sees what Alice rolled.

    die.peek("Max");
}

Full code.