diff options
| author | Ralf Jung <post@ralfj.de> | 2019-11-26 09:24:39 +0100 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2019-11-26 09:24:39 +0100 |
| commit | 3e96ca2bf7f7c558623e372e7a9800ac752faa9c (patch) | |
| tree | 1eb587ba287c8472ff59b5bf7ca3588cdcf1785d /src/libcore | |
| parent | 3a8e1b63cfc472a3c4884f6a31ab2236d7dd2fb7 (diff) | |
| download | rust-3e96ca2bf7f7c558623e372e7a9800ac752faa9c.tar.gz rust-3e96ca2bf7f7c558623e372e7a9800ac752faa9c.zip | |
abort on BoxMeUp misuse
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/panic.rs | 8 |
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); } |
