diff options
| author | Dylan DPC <dylan.dpc@gmail.com> | 2020-11-29 03:14:07 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-29 03:14:07 +0100 |
| commit | a2b4d97984bfe9df4b47da345aa01d79eb57a9f9 (patch) | |
| tree | 2cb54d1c60aa1cedf6aa94ec63f86277cbadf268 /src/test/codegen/src-hash-algorithm | |
| parent | 914d07ae5f90f01f138e66807873295fceaa9a26 (diff) | |
| parent | 7387f48e506456b8ca336d5036e380cd61e8c8c7 (diff) | |
| download | rust-a2b4d97984bfe9df4b47da345aa01d79eb57a9f9.tar.gz rust-a2b4d97984bfe9df4b47da345aa01d79eb57a9f9.zip | |
Rollup merge of #79327 - TimDiekmann:static-alloc-pin-in-box, r=Mark-Simulacrum
Require allocator to be static for boxed `Pin`-API Allocators has to retain their validity until the instance and all of its clones are dropped. When pinning a value, it must live forever, thus, the allocator requires a `'static` lifetime for pinning a value. [Example from reddit](https://www.reddit.com/r/rust/comments/jymzdw/the_story_continues_vec_now_supports_custom/gd7qak2?utm_source=share&utm_medium=web2x&context=3): ```rust let alloc = MyAlloc(/* ... */); let pinned = Box::pin_in(42, alloc); mem::forget(pinned); // Now `value` must live forever // Otherwise `Pin`'s invariants are violated, storage invalidated // before Drop was called. // borrow of `memory` can end here, there is no value keeping it. drop(alloc); // Oh, value doesn't live forever. ```
Diffstat (limited to 'src/test/codegen/src-hash-algorithm')
0 files changed, 0 insertions, 0 deletions
