找出这个构造器为何没有建立有效的自引用。
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)
}
}