about summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2019-11-26 09:24:39 +0100
committerRalf Jung <post@ralfj.de>2019-11-26 09:24:39 +0100
commit3e96ca2bf7f7c558623e372e7a9800ac752faa9c (patch)
tree1eb587ba287c8472ff59b5bf7ca3588cdcf1785d /src/libcore
parent3a8e1b63cfc472a3c4884f6a31ab2236d7dd2fb7 (diff)
downloadrust-3e96ca2bf7f7c558623e372e7a9800ac752faa9c.tar.gz
rust-3e96ca2bf7f7c558623e372e7a9800ac752faa9c.zip
abort on BoxMeUp misuse
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/panic.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libcore/panic.rs b/src/libcore/panic.rs
index 0abc481f6e5..99b372d92c8 100644
--- a/src/libcore/panic.rs
+++ b/src/libcore/panic.rs
@@ -266,8 +266,16 @@ impl fmt::Display for Location<'_> {
 #[unstable(feature = "std_internals", issue = "0")]
 #[doc(hidden)]
 pub unsafe trait BoxMeUp {
+    /// Take full ownership of the contents.
     /// The return type is actually `Box<dyn Any + Send>`, but we cannot use `Box` in libcore.
+    ///
     /// After this method got called, only some dummy default value is left in `self`.
+    /// Calling this method twice, or calling `get` after calling this method, is an error.
+    ///
+    /// The argument is borrowed because the panic runtime (`__rust_start_panic`) only
+    /// gets a borrowed `dyn BoxMeUp`.
     fn take_box(&mut self) -> *mut (dyn Any + Send);
+
+    /// Just borrow the contents.
     fn get(&mut self) -> &(dyn Any + Send);
 }