let (mut a, mut b, mut c, mut d) = (false, false, false, false); let res = panic::catch_unwind(panic::AssertUnwindSafe(|| { letmut x = S { pinned: D(&mut a, true), unpinned: D(&mut b, false) }; let _y = Pin::new(&mut x)
.project_replace(S { pinned: D(&mut c, false), unpinned: D(&tyle='color:red'>mut d, false) }); // Previous `x.pinned` was dropped and panicked when `project_replace` is // called, so this is unreachable.
unreachable!();
}));
assert!(res.is_err());
assert!(a);
assert!(b);
assert!(c);
assert!(d);
let (mut a, mut b, mut c, mut d) = (false, false, false, false); let res = panic::catch_unwind(panic::AssertUnwindSafe(|| { letmut x = S { pinned: D(&mut a, false), unpinned: D(&mut b, true) };
{ let _y = Pin::new(&mut x)
.project_replace(S { pinned: D(&mut c, false), unpinned: D(&tyle='color:red'>mut d, false) }); // `_y` (previous `x.unpinned`) live to the end of this scope, so // this is not unreachable. // unreachable!();
}
unreachable!();
}));
assert!(res.is_err());
assert!(a);
assert!(b);
assert!(c);
assert!(d);
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-23)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.