about summary refs log tree commit diff
path: root/src/libcore/mem/mod.rs
AgeCommit message (Collapse)AuthorLines
2020-07-27mv std libs to library/mark-1044/+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-6/+18
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-05-19update libcore, add `discriminant_kind` lang-itemBastian Kauschke-3/+3
2020-04-25Bump bootstrap compilerMark Rousskov-8/+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/+2
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-1/+1
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-01-03Minor: change take() docs grammar to match other docsPeter Todd-1/+1
Eg. mem::replace()
2019-12-22Format the worldMark Rousskov-4/+2
2019-12-21Require issue = "none" over issue = "0" in unstable attributesRoss MacArthur-1/+1
2019-12-18Propagate cfg bootstrapMark Rousskov-19/+5
2019-12-14Auto merge of #67136 - oli-obk:const_stability, r=Centrilbors-0/+3
Require stable/unstable annotations for the constness of all stable fns with a const modifier r? @RalfJung @Centril Every `#[stable]` const fn now needs either a `#[rustc_const_unstable]` attribute or a `#[rustc_const_stable]` attribute. You can't silently stabilize the constness of a function anymore.
2019-12-13be explicit that mem::uninitialized is the same as ↵Ralf Jung-1/+5
MaybeUninit::uninit().assume_init()
2019-12-13Require stable/unstable annotations for the constness of all stable ↵Oliver Scherer-0/+3
functions with a `const` modifier