找出 Ticket 自引用里的 bug

来自 Pin 与 Unpin
Rust 1.98 高级 4分钟 找出 1处问题

找出这个构造器为何没有建立有效的自引用。

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)
    }
}
在试验场中打开
报告错误