# 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)_