Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Additional *mut [T] methods #95594

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 <[email protected]>
@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`.
@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
Contributor

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in 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