Commit graph

73 commits

Author SHA1 Message Date
Matthias Schiffer
dfd68441be
ptr: add tracking issue for len() method on raw slices 2020-04-14 21:34:27 +02:00
Matthias Schiffer
2a29f8f89d
ptr: introduce len() method on raw slices
It is already possible to extract the pointer part of a raw slice by a
simple cast, but retrieving the length is not possible without relying
on the representation of the raw slice when it is not valid to convert
the raw slice into a slice reference (i.e. the pointer is null or
unaligned).

Introduce a len() method on raw slices to add this missing feature.
2020-04-14 18:49:29 +02:00
Matthias Schiffer
43612e21a6
ptr: implement "const_slice_ptr" and "mut_slice_ptr" lang items 2020-04-14 18:49:29 +02:00
Linus Färnstrand
c0ec0a27b3 Replace max/min_value() with MAX/MIN assoc consts 2020-04-03 09:33:10 +02:00
Ralf Jung
058ff728dc debug-assert ptr sanity in ptr::write 2020-03-14 14:05:26 +01:00
Matthias Krüger
136ad015b6 fix various typos 2020-03-06 15:19:31 +01:00
bors
5703b7aafb Auto merge of #69208 - RalfJung:debug-assert, r=Mark-Simulacrum
debug_assert a few more raw pointer methods

Makes progress for https://github.com/rust-lang/rust/issues/53871
2020-02-29 00:20:44 +00:00
Ralf Jung
d1d0de94db disable debug assertion in ptr::write for now 2020-02-27 09:43:33 +01:00
Ralf Jung
bec5d37ee1 debug_assert a few more raw pointer methods 2020-02-16 14:44:16 +01:00
Amos Onn
943e65396d Improve #Safety of core::ptr::drop_in_place
Added missing conditions:
- Valid for writes
- Valid for destructing
2020-02-16 13:12:34 +01:00
Amos Onn
40ca167944 Improve #Safety in various methods in core::ptr
For all methods which read a value of type T, `read`, `read_unaligned`,
`read_volatile` and `replace`, added missing
constraint:
The value they point to must be properly initialized
2020-02-15 14:00:21 +01:00
Amos Onn
351782d30a Improve #Safety of core::ptr::replace
Added missing condition:
`dst` must be readable
2020-02-15 14:00:10 +01:00
Amos Onn
302b9e4b54 Improve #Safety in various methods in core::ptr
s/for reads and writes/for both ...
2020-02-15 13:58:54 +01:00
Amos Onn
22b263ae18 Optimize core::ptr::align_offset
- As explained in the comment inside mod_inv, it is valid to work mod
  `usize::max_value()` right until the end.
2020-02-03 01:03:33 +01:00
Amos Onn
3173cd1473 Optimize core::ptr::align_offset
- When calculating the inverse, it's enough to work `mod a/g` instead
  of `mod a`.
2020-02-03 01:03:33 +01:00
Amos Onn
e835d0d761 Optimize core::ptr::align_offset
- Stopping condition inside mod_inv can be >= instead of >
- Remove intrinsics::unchecked_rem, we are working modulu powers-of-2 so
we can simply mask
2020-02-03 01:03:33 +01:00
bors
82018665a5 Auto merge of #68234 - CAD97:slice-from-raw-parts, r=KodrAus
Stabilize ptr::slice_from_raw_parts[_mut]

Closes #36925, the tracking issue.
Initial impl: #60667

r? @rust-lang/libs

In addition to stabilizing, I've adjusted the example of `ptr::slice_from_raw_parts` to use `slice_from_raw_parts` instead of `slice_from_raw_parts_mut`, which was unnecessary for the example as written.
2020-01-28 05:31:34 +00:00
Ralf Jung
79359315d6 get rid of real_drop_in_place again 2020-01-18 11:15:56 +01:00
CAD97
1c0d4851a6 Fix incorrect slice->ptr conversion in slice_from_raw_parts docs 2020-01-15 17:00:36 -05:00
CAD97
f76177ce43 Stabilize ptr::slice_from_raw_parts[_mut] 2020-01-14 20:15:39 -05:00
Trevor Spiteri
f8428cf8d8 doc: add Null-unchecked version section to mut pointer as_mut method
The as_ref method already has a Null-unchecked version section, its
example is a modification of the example in the main as_ref section.
Similarly the example in this commit is a modification of the example
in main as_mut section.
2020-01-09 14:51:58 +01:00
jumbatm
f6faf0b2e7 Clean up const-hack from #63810 2019-12-27 23:21:27 +10:00
Mark Rousskov
a06baa56b9 Format the world 2019-12-22 17:42:47 -05:00
Mazdak Farrokhzad
eaeb1138c6
Rollup merge of #67480 - rossmacarthur:fix-41260-avoid-issue-0-part-2, r=Centril
Require issue = "none" over issue = "0" in unstable attributes

These changes make the use of `issue = "none"` required in unstable attributes throughout the compiler.

Notes:
- #66299 is now in beta so `issue = "none"` is accepted.
- The `tidy` tool now fails on `issue = "0"`.
- Tests that used `issue = "0"` were changed to use `issue = "none"`, except for _one_ that asserts `issue = "0"` can still be used.
- The compiler still allows `issue = "0"` because some submodules require it, this could be disallowed once these are updated.

Resolves #41260

r? @varkor
2019-12-22 02:40:04 +01:00
Mazdak Farrokhzad
f43ced3dbc
Rollup merge of #67462 - DutchGhost:const_slice_from_raw_parts, r=dtolnay
Make ptr::slice_from_raw_parts a const fn available under a feature flag

A first step in the direction of https://github.com/rust-lang/rust/issues/67456 .
This makes `ptr::slice_from_raw_parts` and `ptr::slice_from_raw_parts_mut` available as a const fn under a feature flag.
2019-12-21 15:29:47 +01:00
Ross MacArthur
f7256d28d1
Require issue = "none" over issue = "0" in unstable attributes 2019-12-21 13:16:18 +02:00
Dodo
382d370c4f Make ptr::slice_from_raw_parts a const fn available under a feature flag 2019-12-20 21:42:03 +01:00
Christoph Schmidler
12d65c28a6 Split up ptr/mod.rs in libcore, one with implementation detail for const ptr and the other with mut ptr 2019-12-19 09:01:26 +01:00
Mark Rousskov
82184440ec Propagate cfg bootstrap 2019-12-18 12:16:19 -05:00
Oliver Scherer
5e17e39881 Require stable/unstable annotations for the constness of all stable functions with a const modifier 2019-12-13 11:27:02 +01:00
David Tolnay
c737169fe5
Format libcore with rustfmt (including tests and benches) 2019-12-06 20:20:51 -08:00
David Tolnay
24d7f72c62
Suppress libcore/ptr/mod.rs filelength lint 2019-12-06 20:16:12 -08:00
Ralf Jung
764ef8c81f
Rollup merge of #66379 - CreepySkeleton:patch-1, r=RalfJung
Rephrase docs in for ptr

These methods can be supplied with NULL just fine, this is the whole point of `Option<&T>` return type.
2019-11-29 22:57:28 +01:00
CreepySkeleton
f11dd32f75 Use intra-doc links 2019-11-27 21:36:09 +03:00
CreepySkeleton
d411dd27bf Elaborate on std::ptr::{as_ref,as_mod} and clarify docs 2019-11-27 21:33:24 +03:00
David Tolnay
95e00bfed8
Format libcore with rustfmt
This commit applies rustfmt with default settings to files in
src/libcore *that are not involved in any currently open PR* to minimize
merge conflicts. The list of files involved in open PRs was determined
by querying GitHub's GraphQL API with this script:
https://gist.github.com/dtolnay/aa9c34993dc051a4f344d1b10e4487e8

With the list of files from the script in `outstanding_files`, the
relevant commands were:

    $ find src/libcore -name '*.rs' | xargs rustfmt --edition=2018
    $ rg libcore outstanding_files | xargs git checkout --

Repeating this process several months apart should get us coverage of
most of the rest of libcore.
2019-11-26 23:02:11 -08:00
Mark Rousskov
997feacddd Snap cfgs 2019-11-12 16:36:57 -05:00
Mazdak Farrokhzad
379b19c17f
Rollup merge of #63793 - oli-obk:🧹, r=dtolnay
Have tidy ensure that we document all `unsafe` blocks in libcore

cc @rust-lang/libs

I documented a few and added ignore flags on the other files. We can incrementally document the files, but won't regress any files this way.
2019-11-07 14:27:20 +01:00
Oliver Scherer
02f9167f94 Have tidy ensure that we document all unsafe blocks in libcore 2019-11-06 11:04:42 +01:00
Ralf Jung
11a48a0423
Apply suggestions from code review
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-11-05 21:50:55 +01:00
Ralf Jung
1a254e4f43 expand slice from_raw_part docs 2019-11-05 09:55:33 +01:00
Ralf Jung
82dc3aa5fb link from raw slice creation methods to safety requirements 2019-11-05 09:32:47 +01:00
bors
6c1b220fd7 Auto merge of #63810 - oli-obk:const_offset_from, r=RalfJung,nikic
Make <*const/mut T>::offset_from `const fn`

This reenables offset_of cc @mjbshaw 	after https://github.com/rust-lang/rust/pull/63075 broke it
2019-11-02 22:26:54 +00:00
Oliver Scherer
88b5e945e0 Make <*const/mut T>::offset_from const fn 2019-10-11 10:40:49 +02:00
Lzu Tao
d0862ec9b0 Inline ptr::null(_mut) even in debug builds 2019-10-02 12:22:37 +00:00
Lzu Tao
6c1b447f2e Remove unneeded fn main blocks from docs 2019-10-01 11:55:46 +00:00
Alexander Regueiro
b0006dff10 A few cosmetic improvements to code & comments in liballoc and libcore 2019-09-06 16:02:25 +01:00
Simon Sapin
9bd70834b0
Doc nit
Co-Authored-By: Ralf Jung <post@ralfj.de>
2019-08-17 21:40:35 +02:00
Simon Sapin
ba0328327c Doc nits
Co-Authored-By: Ralf Jung <post@ralfj.de>
2019-08-17 15:42:05 +02:00
Simon Sapin
7b02b9f8ec Add new_uninit and assume_init on Box, Rc, and Arc 2019-08-16 17:11:18 +02:00