os-rust/library/std/src
Jane Lusby a87a0d089e Add ThinBox type for 1 stack pointer sized heap allocated trait objects
Relevant commit messages from squashed history in order:

Add initial version of ThinBox

update test to actually capture failure

swap to middle ptr impl based on matthieu-m's design

Fix stack overflow in debug impl

The previous version would take a `&ThinBox<T>` and deref it once, which
resulted in a no-op and the same type, which it would then print causing
an endless recursion. I've switched to calling `deref` by name to let
method resolution handle deref the correct number of times.

I've also updated the Drop impl for good measure since it seemed like it
could be falling prey to the same bug, and I'll be adding some tests to
verify that the drop is happening correctly.

add test to verify drop is behaving

add doc examples and remove unnecessary Pointee bounds

ThinBox: use NonNull

ThinBox: tests for size

Apply suggestions from code review

Co-authored-by: Alphyr <47725341+a1phyr@users.noreply.github.com>

use handle_alloc_error and fix drop signature

update niche and size tests

add cfg for allocating APIs

check null before calculating offset

add test for zst and trial usage

prevent optimizer induced ub in drop and cleanup metadata gathering

account for arbitrary size and alignment metadata

Thank you nika and thomcc!

Update library/alloc/src/boxed/thin.rs

Co-authored-by: Josh Triplett <josh@joshtriplett.org>

Update library/alloc/src/boxed/thin.rs

Co-authored-by: Josh Triplett <josh@joshtriplett.org>
2022-04-08 09:00:16 -07:00
..
backtrace Use implicit capture syntax in format_args 2022-03-10 10:23:40 -05:00
collections Rollup merge of #94826 - allgoewer:fix-retain-documentation, r=yaahc 2022-03-11 03:32:06 +01:00
env std: move "mod tests/benches" to separate files 2020-08-31 02:56:59 +00:00
error Use implicit capture syntax in format_args 2022-03-10 10:23:40 -05:00
f32 Implement IEEE 754-2019 minimun and maximum functions for f32/f64 2021-11-20 10:14:03 +01:00
f64 Remove fNN::lerp - consensus unlikely 2021-10-25 22:44:41 -05:00
ffi add CStr::from_bytes_until_nul 2022-03-18 15:46:49 -07:00
fs Use gender neutral terms 2022-04-07 08:51:59 +01:00
io Rollup merge of #95185 - m-ou-se:stabilize-stdin-lines, r=Mark-Simulacrum 2022-04-07 01:59:21 +02:00
lazy Upgrade wasm32 image to Ubuntu 20.04 2021-02-06 13:05:56 +01:00
net Adjust feature names that disagree on const stabilization version 2022-03-31 12:34:48 -07:00
num rustc_expand: Mark inner #![test] attributes as soft-unstable 2020-11-20 19:35:03 +03:00
os Rollup merge of #88025 - devnexen:netbsd_scm_creds, r=Amanieu 2022-04-05 22:58:54 +02:00
panic review: fix nits and move panic safety tests to the correct place 2020-09-25 23:10:24 +02:00
path Rollup merge of #94650 - ChrisDenton:windows-absolute-fix, r=dtolnay 2022-03-19 14:50:24 +01:00
prelude update cfg(bootstrap)s 2022-01-28 15:01:07 +01:00
process Use implicit capture syntax in format_args 2022-03-10 10:23:40 -05:00
sync Rename RWLock to RwLock in std::sys. 2022-04-06 16:33:53 +02:00
sys Auto merge of #95798 - Dylan-DPC:rollup-51hx1wl, r=Dylan-DPC 2022-04-08 10:41:10 +00:00
sys_common Rename RWLock to RwLock in std::sys. 2022-04-06 16:33:53 +02:00
thread Use gender neutral terms 2022-04-07 08:51:59 +01:00
time Use implicit capture syntax in format_args 2022-03-10 10:23:40 -05:00
alloc.rs trivial cfg(bootstrap) changes 2022-04-05 23:18:40 +02:00
ascii.rs Convert many files to intra-doc links 2020-09-02 17:37:40 -04:00
backtrace.rs revert changes that cast functions to raw pointers, portability hazard 2022-03-29 20:18:27 -04:00
env.rs Link to std::io's platform-specific behavior disclaimer 2022-03-27 21:01:28 -07:00
error.rs Add ThinBox type for 1 stack pointer sized heap allocated trait objects 2022-04-08 09:00:16 -07:00
f32.rs trivial cfg(bootstrap) changes 2022-04-05 23:18:40 +02:00
f64.rs trivial cfg(bootstrap) changes 2022-04-05 23:18:40 +02:00
fs.rs Document synchronicity 2022-04-05 08:14:13 +01:00
keyword_docs.rs Rollup merge of #93692 - mfrw:mfrw/document-keyword-in, r=dtolnay 2022-03-19 02:02:02 +01:00
lazy.rs Add #[must_use] to core and std constructors 2021-10-10 02:44:26 -04:00
lib.rs Add ThinBox type for 1 stack pointer sized heap allocated trait objects 2022-04-08 09:00:16 -07:00
macros.rs Format core and std macro rules, removing needless surrounding blocks 2022-03-11 15:26:51 -08:00
num.rs Add Saturating type (based on Wrapping type) 2021-08-10 19:27:01 +02:00
panic.rs Configure panic hook backtrace behavior 2022-02-02 13:46:42 -05:00
panicking.rs Rename RWLock to RwLock in std::sys. 2022-04-06 16:33:53 +02:00
path.rs Make the stdlib largely conform to strict provenance. 2022-03-29 20:18:21 -04:00
primitive_docs.rs Use implicit capture syntax in format_args 2022-03-10 10:23:40 -05:00
process.rs fix since field version for termination stabilization 2022-03-29 17:10:49 -07:00
rt.rs Change Termination::report return type to ExitCode 2022-01-28 12:53:36 -08:00
time.rs Link to std::io's platform-specific behavior disclaimer 2022-03-27 21:01:28 -07:00