Skip to content

Additional *mut [T] methods #95594

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 3 commits into from
Jun 2, 2022
Merged

Conversation

the8472
Copy link
Member

@the8472 the8472 commented Apr 2, 2022

Split out from #94247

This adds the following methods to raw slices that already exist on regular slices

  • *mut [T]::is_empty
  • *mut [T]::split_at_mut
  • *mut [T]::split_at_mut_unchecked

These methods reduce the amount of unsafe code needed to migrate ChunksMut and related iterators
to raw slices (#94247)

r? @m-ou-se

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Apr 2, 2022
saethlin and others added 2 commits April 2, 2022 19:48
Split out from rust-lang#94247

This adds the following methods to raw slices that already exist on regular slices

* `*mut [T]::is_empty`
* `*mut [T]::split_at_mut`
* `*mut [T]::split_at_unchecked`

These methods reduce the amount of unsafe code needed to migrate ChunksMut and related iterators
to raw slices (rust-lang#94247)

Co-authored-by:: The 8472 <git@infinite-source.de>
@the8472 the8472 force-pushed the raw_slice_methods branch from e39d006 to a671fa1 Compare April 2, 2022 17:49
@saethlin
Copy link
Member

saethlin commented Apr 2, 2022

The implementations of ChunksMut::last and RChunksMut::last currently use checked indexing, but in the PR this is supporting I used get_unchecked_mut, only because it's already there. Should we also add some kind of checked indexing for raw slices?

@the8472
Copy link
Member Author

the8472 commented Apr 2, 2022

Indexing raw slices could be useful, but I think that should go into a separate PR if we want to mirror SliceIndex. Plus we'd still need unsafe to deref or read the pointer.

@dtolnay dtolnay added the T-libs-api Relevant to the library API team, which will review and decide on the PR/issue. label Apr 2, 2022
`&mut [T]` implies validity which automatically makes `ptr::add` ok within its bounds.
But `*mut [T]` does not. Since we still want the benefits of in-bounds pointer arithmetic
`split_at_must` must require the caller to pass valid pointers and therefore it is `unsafe`.
@the8472 the8472 force-pushed the raw_slice_methods branch from 1ee3594 to b0ca46e Compare April 3, 2022 11:51
@JohnCSimon JohnCSimon added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Apr 24, 2022
@JohnCSimon JohnCSimon added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels May 22, 2022
@saethlin
Copy link
Member

Hi, this PR has been open for a while with no activity and I think it's blocking me from fixing what I think is a soundness issue in the standard library: #94231

This is just a PR to add new methods behind features so I don't think it should be a lot of work to move this forward, but please let me know if there's something I can do to help.

@yaahc
Copy link
Member

yaahc commented May 31, 2022

@bors r+

@bors
Copy link
Collaborator

bors commented May 31, 2022

📌 Commit b0ca46e has been approved by yaahc

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels May 31, 2022
@m-ou-se m-ou-se assigned yaahc and unassigned m-ou-se Jun 1, 2022
bors added a commit to rust-lang-ci/rust that referenced this pull request Jun 1, 2022
Rollup of 6 pull requests

Successful merges:

 - rust-lang#95594 (Additional `*mut [T]` methods)
 - rust-lang#97130 (rustdoc: avoid including impl blocks with filled-in generics)
 - rust-lang#97166 (Move conditions out of recover/report functions.)
 - rust-lang#97605 (Mention filename in suggestion when it differs from primary span)
 - rust-lang#97613 (rustdoc: Improve calculation of "Impls on Foreign Types")
 - rust-lang#97626 (rename PointerAddress → PointerExposeAddress)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 3ed9bbe into rust-lang:master Jun 2, 2022
@rustbot rustbot added this to the 1.63.0 milestone Jun 2, 2022
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-libs-api Relevant to the library API team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants