about summary refs log tree commit diff
path: root/src/libcore/mem
AgeCommit message (Collapse)AuthorLines
2020-07-27mv std libs to library/mark-2029/+0
2020-07-23Rollup merge of #74141 - euclio:typos, r=steveklabnikManish Goregaokar-4/+4
libstd/libcore: fix various typos
2020-07-16apply bootstrap cfgsMark Rousskov-1/+0
2020-07-10Rollup merge of #73887 - DutchGhost:master, r=oli-obkManish Goregaokar-1/+1
stabilize const mem::forget Stabilizes const `mem::forget` as implemented in https://github.com/rust-lang/rust/pull/69617 and tracked in https://github.com/rust-lang/rust/issues/69616. Closes https://github.com/rust-lang/rust/issues/69616
2020-07-09libstd/libcore: fix various typosAndy Russell-4/+4
2020-07-05variant_count: avoid incorrect dummy implementationRalf Jung-0/+1
2020-06-30Deny unsafe ops in unsafe fns, part 6LeSeulArtichaut-1/+0
And final part!!!
2020-06-30Deny unsafe ops in unsafe fns, part 2LeSeulArtichaut-18/+57
2020-06-30stabilize const mem::forgetDodo-1/+1
2020-06-26Rollup merge of #73579 - RalfJung:doc-missing-links, r=shepmasterManish Goregaokar-2/+4
add missing doc links The doc comments contain ``[`size_of_val`]`` but the link target was missing.
2020-06-24Fix testsNathan Corbyn-0/+1
2020-06-24Fix testsNathan Corbyn-0/+2
2020-06-24Implement intrinsicNathan Corbyn-0/+27
2020-06-21improve grammarRalf Jung-2/+2
Co-authored-by: Bastian Kauschke <bastian_kauschke@hotmail.de>
2020-06-21tweak wordingRalf Jung-2/+2
2020-06-21add missing doc linksRalf Jung-0/+2
2020-06-17Remove duplicate sentence fragment from mem::zeroed docDavid Tolnay-4/+4
2020-06-17Don't imply function pointers are referencesPoliorcetics-2/+2
Co-authored-by: David Tolnay <dtolnay@gmail.com>
2020-06-16Mention functions pointers in the documentationAlexis Bourget-5/+7
2020-06-15Fix typo in docs of std::memivan tkachenko-1/+1
2020-06-08Fix small typo in docs for std::mem::dropalamb-1/+1
2020-06-01Remove allow missing_debug_implementations for MaybeUninitKonrad Borowski-1/+0
It already has a Debug implementation.
2020-05-23add warning sign to UB examplesRalf Jung-13/+13
2020-05-19update libcore, add `discriminant_kind` lang-itemBastian Kauschke-3/+3
2020-05-16emphasize that ManuallyDrop is safe-to-access and unsafe-to-dropRalf Jung-1/+5
2020-05-15Improve the documentation for ManuallyDrop to resolve conflicting usage of ↵Diggory Blake-10/+29
terminology.
2020-04-25Bump bootstrap compilerMark Rousskov-20/+0
2020-04-23Rollup merge of #71446 - Amanieu:transmute_copy, r=sfacklerDylan DPC-1/+6
Only use read_unaligned in transmute_copy if necessary I've noticed that this causes LLVM to generate poor code on targets that don't support unaligned memory accesses.
2020-04-22Only use read_unaligned in transmute_copy if necessaryAmanieu d'Antras-1/+6
2020-04-17Lint must_use on mem::replaceJosh Stone-0/+1
This adds a hint on `mem::replace`, "if you don't need the old value, you can just assign the new value directly". This is in similar spirit to the `must_use` on `ManuallyDrop::take`.
2020-03-22Auto merge of #69079 - CAD97:layout-of-ptr, r=RalfJungbors-0/+92
Allow calculating the layout behind a pointer There was some discussion around allowing this previously. This does make the requirement for raw pointers to have valid metadata exposed as part of the std API (as a safety invariant, not validity invariant), though I think this is not strictly necessarily required as of current. cc @rust-lang/wg-unsafe-code-guidelines Naming is hard; I picked the best "obvious" name I could come up with. If it's agreed that this is actually a desired API surface, I'll file a tracking issue and update the attributes.
2020-03-21Allow calculating the layout behind a pointerCAD97-0/+92
Let align/size_of_of_val intrinsics work on ptrs
2020-03-19Don't hard-code the vector length in the examples.Hrvoje Nikšić-4/+3
Co-Authored-By: lzutao <taolzu@gmail.com>
2020-03-19Minor re-wordings and typo fixes.Hrvoje Nikšić-8/+8
Co-Authored-By: Ralf Jung <post@ralfj.de>
2020-03-19Restore (and reword) the warning against passing invalid values to mem::forget.Hrvoje Niksic-17/+35
As pointed out by Ralf Jung, dangling references and boxes are undefined behavior as per https://doc.rust-lang.org/reference/behavior-considered-undefined.html and the Miri checker.
2020-03-19Clarify the relationship between `forget()` and `ManuallyDrop`.Hrvoje Niksic-11/+27
As discussed on reddit, this commit addresses two issues with the documentation of `mem::forget()`: * The documentation of `mem::forget()` can confuse the reader because of the discrepancy between usage examples that show correct usage and the accompanying text which speaks of the possibility of double-free. The text that says "if the panic occurs before `mem::forget` was called" refers to a variant of the second example that was never shown, modified to use `mem::forget` instead of `ManuallyDrop`. Ideally the documentation should show both variants, so it's clear what it's talking about. Also, the double free could be fixed just by placing `mem::forget(v)` before the construction of `s`. Since the lifetimes of `s` and `v` wouldn't overlap, there would be no point where panic could cause a double free. This could be mentioned, and contrasted against the more robust fix of using `ManuallyDrop`. * This sentence seems unjustified: "For some types, operations such as passing ownership (to a funcion like `mem::forget`) requires them to actually be fully owned right now [...]". Unlike C++, Rust has no move constructors, its moves are (possibly elided) bitwise copies. Even if you pass an invalid object to `mem::forget`, no harm should come to pass because `mem::forget` consumes the object and exists solely to prevent drop, so there no one left to observe the invalid state state.
2020-03-17Rollup merge of #69922 - RalfJung:less-intrinsic, r=oli-obkMazdak Farrokhzad-4/+4
implement zeroed and uninitialized with MaybeUninit This is the second attempt of doing such a change (first PR: https://github.com/rust-lang/rust/pull/62150). The last change [got reverted](https://github.com/rust-lang/rust/pull/63343) because it [caused](https://github.com/rust-lang/rust/issues/62825) some [issues](https://github.com/rust-lang/rust/issues/52898#issuecomment-512182438) in [code that incorrectly used these functions](https://github.com/erlepereira/x11-rs/issues/99). Since then, the [problematic code has been fixed](https://github.com/erlepereira/x11-rs/pull/101), and rustc [gained a lint](https://github.com/rust-lang/rust/pull/63346) that is able to detect many misuses of these functions statically and a [dynamic check that panics](https://github.com/rust-lang/rust/pull/66059) instead of causing UB for some incorrect uses. Fixes https://github.com/rust-lang/rust/issues/62825
2020-03-16make mem::{zeroed,uninitialized} inline(always)Ralf Jung-2/+2
2020-03-12rename panic_if_ intrinsics to assert_Ralf Jung-2/+14
2020-03-11implement zeroed and uninitialized with MaybeUninitRalf Jung-2/+2
2020-03-11Rollup merge of #69825 - lcnr:discriminant, r=oli-obkMazdak Farrokhzad-1/+2
make `mem::discriminant` const implements #69821, which could be used as a tracking issue for `const_discriminant`. Should this be added to the meta tracking issue #57563? @Lokathor
2020-03-11Rollup merge of #66059 - RalfJung:panic-on-non-zero, r=eddybMazdak Farrokhzad-0/+6
mem::zeroed/uninit: panic on types that do not permit zero-initialization r? @eddyb @oli-obk Cc https://github.com/rust-lang/rust/issues/62825 Also see [this summary comment](https://github.com/rust-lang/rust/pull/66059#issuecomment-586734747)
2020-03-08constify `mem::discriminant`Bastian Kauschke-1/+2
2020-03-06fix various typosMatthias Krüger-2/+2
2020-03-02actually mark the function constDutchGhost-1/+1
2020-03-01constify mem::forgetDutchGhost-0/+1
2020-02-29mem::zeroed/uninit: panic on types that do not permit zero-initializationRalf Jung-0/+6
2020-02-22Fix doc example for `MaybeUninit::get_mut()`Daniel Henry-Mantilla-1/+1
Suggested by @ametisf in https://github.com/rust-lang/rust/pull/65948#issuecomment-589988183 Co-Authored-By: Frantisek Fladung <fladufra@fel.cvut.cz>
2020-01-09stabalize ManuallyDrop::takeCAD97-7/+8
2020-01-03Minor: change take() docs grammar to match other docsPeter Todd-1/+1
Eg. mem::replace()