Skip to content

MaybeUninit inherent slice methods part 2#135394

Merged
bors merged 1 commit intorust-lang:masterfrom
clarfonthey:uninit-slices-part-2
Mar 20, 2025
Merged

MaybeUninit inherent slice methods part 2#135394
bors merged 1 commit intorust-lang:masterfrom
clarfonthey:uninit-slices-part-2

Conversation

@clarfonthey
Copy link
Copy Markdown
Contributor

@clarfonthey clarfonthey commented Jan 12, 2025

These were moved out of #129259 since they require additional libs-api approval. Tracking issue: #117428.

New API surface:

impl<T> [MaybeUninit<T>] {
    // replacing fill; renamed to avoid conflict
    pub fn write_filled(&mut self, value: T) -> &mut [T] where T: Clone;

    // replacing fill_with; renamed to avoid conflict
    pub fn write_with<F>(&mut self, value: F) -> &mut [T] where F: FnMut() -> T;

    // renamed to remove "fill" terminology, since this is closer to the write_*_of_slice methods
    pub fn write_iter<I>(&mut self, iter: I) -> (&mut [T], &mut Self) where I: Iterator<Item = T>;
}

Relevant motivation for these methods; see #129259 for earlier methods' motiviations.

  • I chose write_filled since filled is being used as an object here, whereas it's being used as an action in fill.
  • I chose write_with instead of write_filled_with since it's shorter and still matches well.
  • I chose write_iter because it feels completely different from the fill methods, and still has the intent clear.

In all of the methods, it felt appropriate to ensure that they contained write to clarify that they are effectively just special ways of doing MaybeUninit::write for each element of a slice.

Tracking issue: #117428

r? libs-api

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

O-windows Operating system: Windows S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-libs Relevant to the library 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