Spot the bug in the Ticket self-reference

from Pin and Unpin
Rust 1.98 advanced 4 min 1 issue to find

Find why this constructor does not establish a valid self-reference.

Rust
use std::marker::PhantomPinned;
use std::pin::Pin;
use std::ptr;

struct Ticket {
    label: String,
    label_ptr: *const String,
    _pin: PhantomPinned,
}

impl Ticket {
    fn new(label: String) -> Pin<Box<Self>> {
        let mut ticket = Self { label, label_ptr: ptr::null(), _pin: PhantomPinned };
        ticket.label_ptr = &ticket.label;
        Box::pin(ticket)
    }
}
Open in playground
Report an error