# Libs-API Meeting 2025-07-15 ###### tags: `Libs Meetings` `Minutes` **Meeting Link**: https://meet.jit.si/rust-libs-meeting-crxoz2at8hiccp7b3ixf89qgxfymlbwr **Attendees**: Amanieu, David, The 8472, TC, Chris Denton, Martin ## Agenda - Triage - Anything else? ## Triage ### FCPs 1 rust-lang/rfcs T-libs-api FCPs - merge rust.tf/rfc3809 *RFC: enable \`derive(From)\` for single\-field structs* - (2 checkboxes left) 17 rust-lang/rust T-libs-api FCPs - merge rust.tf/80437 *Tracking Issue for \`box\_into\_inner\`* - (1 checkboxes left) - merge rust.tf/140808 *Implement Default for &Option* - (3 checkboxes left) - merge rust.tf/133289 *Tracking Issue for \`const\_array\_each\_ref\`* - (4 checkboxes left) - merge rust.tf/143191 *Stabilize \`rwlock\_downgrade\` library feature* - (3 checkboxes left) - merge rust.tf/143289 *Remove \`\[T\]::array\_chunks(\_mut)\`* - (3 checkboxes left) - merge rust.tf/106418 *Implement \`PartialOrd\` and \`Ord\` for \`Discriminant\`* - (2 checkboxes left) - merge rust.tf/65816 *Tracking issue for \`vec\_into\_raw\_parts\`* - (3 checkboxes left) - merge rust.tf/132968 *Tracking Issue for \`NonZero\<u\*\>::div\_ceil\`* - (4 checkboxes left) - merge rust.tf/139087 *Fallback \`{float}\` to \`f32\` when \`f32: From\<{float}\>\` and add \`impl From\<f16\> for f32\`* - (5 checkboxes left) - merge rust.tf/129333 *Tracking Issue for \`lazy\_get\`* - (3 checkboxes left) - merge rust.tf/127213 *Tracking Issue for AVX512\_FP16 intrinsics* - (3 checkboxes left) - merge rust.tf/136306 *Tracking Issue for NEON fp16 intrinsics* - (3 checkboxes left) - merge rust.tf/141520 *Tracking Issue for const {OsString, PathBuf}::new* - (3 checkboxes left) - merge rust.tf/70530 *Tracking Issue for {BTreeMap,BTreeSet}::extract\_if* - (3 checkboxes left) - merge rust.tf/141994 *add Iterator::contains* - (4 checkboxes left) - merge rust.tf/141744 *Stabilize \`ip\_from\`* - (3 checkboxes left) - merge rust.tf/140956 *\`impl PartialEq\<{str,String}\> for {Path,PathBuf}\`* - (3 checkboxes left) [dtolnay (2)](https://rfcbot.rs/fcp/dtolnay), [tmandry (1)](https://rfcbot.rs/fcp/tmandry), [BurntSushi (15)](https://rfcbot.rs/fcp/BurntSushi), [m-ou-se (15)](https://rfcbot.rs/fcp/m-ou-se), [Amanieu (3)](https://rfcbot.rs/fcp/Amanieu), [joshtriplett (14)](https://rfcbot.rs/fcp/joshtriplett), [nikomatsakis (3)](https://rfcbot.rs/fcp/nikomatsakis), [scottmcm (1)](https://rfcbot.rs/fcp/scottmcm), [jackh726 (1)](https://rfcbot.rs/fcp/jackh726) ### (nominated) rust.tf/libs363 *Un\-specialize impl ToString* ### (nominated) rust.tf/libs615 *Remove overriding impls of deprecated \`Error::description\`.* In favor Widely used libraries for example `serde_json::Error` have removed it a long time ago This simplifies our other discussion about deprecating `description` separately for deprecated-to-call vs deprecated-to-implement. We should be fine to simultaneously deprecate both ### (nominated) rust.tf/143471 *Is mutex poisoning guaranteed to always work properly?* Options: - declare poisoning as not guaranteed - replace panicking flag with a counter + fix foreign exceptions See also: - https://github.com/rust-lang/rfcs/pull/3288 Amanieu worked out how this could maybe be made reliable and will post a reply with details. ### (nominated) rust.tf/143636 *Make \`int\_format\_into\` API more flexible* TC: Looking at this diff, as proposed, this would have the same problem as with `array_chunks`, in that due to the assertion in the const block, one could not write a checked wrapper for the applicable const generic without `const if`. Counterproposal: ```rust impl<T> NumBuffer<T> { pub fn shorten<U>(&mut self) -> &mut NumBuffer<U> { const { assert } ... } } let mut big_buffer = NumBuffer::<u128>::new(); 1u8.format_into(big_buffer.shorten()); ``` ### (nominated) rust.tf/143717 *Add \`Default\` impls for \`Pin\`ned \`Box\`, \`Rc\`, \`Arc\`* Looks good. FCP proposed. ### (nominated) rust.tf/143829 *Trim \`BorrowedCursor\` API* Seems OK. The8472 to reply. ### (nominated) rust.tf/143832 *Regression: intrinsics::drop\_in\_place removed* Seems still OK to go forward. ### (waiting on team) rust.tf/139087 *Fallback \`{float}\` to \`f32\` when \`f32: From\<{float}\>\` and add \`impl From\<f16\> for f32\`* Not waiting on us necessarily. ### (waiting on team) rust.tf/143859 *Guarantee 8 bytes of alignment in Thread::into\_raw* Proposed FCP ### (new change proposal) rust.tf/libs621 *ACP: Add Waker::with\_arc\_wake* Nominated for wg-async. ### (new change proposal) rust.tf/libs620 *Simple \`fill\_bytes\` function for platform provided secure random generation* We'll let this soak for another week for the discussion to continue. ### (new change proposal) rust.tf/libs619 *slice::get\_clamped* We're asking for a more fleshed-out motivation. ### (new change proposal) rust.tf/libs618 *ACP: Implement fmt::Binary for \[u8\] and friends* We actually want this to work with `Debug`, e.g. `println!("{x:b?}")`. That requires updating the format string parsing. That's OK; we'll do that. ### (new change proposal) rust.tf/libs617 *Add \`LocalKey\<Cell\>::update\`* ACP accepted. ### (new change proposal) rust.tf/libs616 *API Proposal: Slice iterator helpers for taking chunks of data* We'll ask for benchmarks. Also, scottmcm had mentioned that https://github.com/rust-lang/rust/pull/122971 could solve this in a different way. It seems maybe this could land now that an LLVM issue has been fixed. The8472 is the reviewer and will have a look. ### (new change proposal) rust.tf/libs603 *A \`Static\` receiver type for dyn\-trait methods that do not take values* ### (new change proposal) rust.tf/libs587 *ACP: \`try\_exact\_div\` method on \`NonZero\<{integer}\>\`* ### (new change proposal) rust.tf/libs578 *ACP: hash\_map! macro to create \`HashMap\`s such as \`vec!\`* We're going to accept this on nightly with `=>` and leave an open question about the syntax. This has lang overlap, as we may want to take a more lang-oriented approach to this. E.g., David suggests `HashMap::from([ a => b ])`. David proposes that we're underusing `=>` in the language, and that perhaps we should lean into `=>` for key/value pairs. In that model, `=>` makes sense as the more preferred alternative in any case. `a => b` can desugar to `(a, b)` (only inside of `[` `]`?) or to some other struct, the way infix `..` desugars to `Range`. There are also open questions on the lang side about whether we want to continue using `:` for struct initialization forever. ### (new change proposal) rust.tf/libs575 *ACP: Add Entry\-like API for Option* ```rust! impl Option<T> { // Already stable fn inspect(self, f: impl FnOnce(&T)) -> Option<T>; fn replace(&mut self, value: T) -> Option<T>; fn update(&mut self, f: impl FnOnce(&mut T)) -> &mut Self; fn update(self, f: impl FnOnce(&mut T)) -> Self; // returns old value fn replace_with(&mut self, f: impl FnOnce(&mut T) -> T) -> Option<T>; } impl Cell<T> { fn update(&self, f: impl FnOnce(T) -> T); } ``` We decided we needed to sleep on this one. ### (stalled change proposal) rust.tf/libs296 *ACP: Designing an alternative \`FromStr\`* ### (stalled change proposal) rust.tf/libs295 *Create iterator function in std libs: split\_item\_mut()* ### (stalled change proposal) rust.tf/libs379 *Combine, an iterator adapter which statefully maps multiple input iterations to a single output iteration* ### (stalled change proposal) rust.tf/libs360 *make FromResidual #\[fundamental\]* ### (stalled change proposal) rust.tf/libs304 *ACP: Avoid the common mistake of \`for x in 0u8..\`* ### (stalled change proposal) rust.tf/libs262 *Add infallible variant of RangeFrom::next()* ### (stalled change proposal) rust.tf/libs456 *Add Option::todo and Result::todo* ### (stalled change proposal) rust.tf/libs347 *Context reactor hook* ### (stalled change proposal) rust.tf/libs336 *Add \`or\_try\_\*\` variants for HashMap and BTreeMap Entry APIs* ### (stalled change proposal) rust.tf/libs348 *std::os::unix::env::{argc, argv}* _Generated by [fully-automatic-rust-libs-team-triage-meeting-agenda-generator](https://github.com/rust-lang/libs-team/tree/main/tools/agenda-generator)_