---
# System prepended metadata

title: Libs-API Meeting 2025-01-14
tags: [Minutes, Libs Meetings]

---

---
date: 2025-01-14
url: https://hackmd.io/3WaYvWxCQJ-NxaAHWKgkEw
---

# Libs-API Meeting 2025-01-14

###### tags: `Libs Meetings` `Minutes`

**Meeting Link**: https://meet.jit.si/rust-libs-meeting-crxoz2at8hiccp7b3ixf89qgxfymlbwr
**Attendees**: Amanieu, Mara, David, The 8472, Chris Denton, TC

## Agenda

- Triage
- Anything else?

## Triage

### FCPs

19 rust-lang/rust T-libs-api FCPs

  - merge rust.tf/80437 *Tracking Issue for \`box\_into\_inner\`* - (1 checkboxes left)
  - merge rust.tf/120287 *Tracking Issue for \`NonZero\*::count\_ones\`* - (3 checkboxes left)
  - merge rust.tf/106418 *Implement \`PartialOrd\` and \`Ord\` for \`Discriminant\`* - (2 checkboxes left)
  - merge rust.tf/134016 *Stabilize \`const\_is\_char\_boundary\` and \`const\_str\_split\_at\`.* - (3 checkboxes left)
  - merge rust.tf/120141 *Tracking Issue for enum access in offset\_of* - (6 checkboxes left)
  - merge rust.tf/134679 *Windows: remove readonly files* - (3 checkboxes left)
  - merge rust.tf/130192 *\[discussion\] \`ErrorKind::InvalidFilename\` from \`io\_error\_more\`* - (3 checkboxes left)
  - merge rust.tf/129375 *Tracking Issue for unbounded\_shifts* - (3 checkboxes left)
  - merge rust.tf/127534 *feat(core): impl Step for NonZero\<u\*\>* - (3 checkboxes left)
  - merge rust.tf/59618 *Tracking issue for HashMap::extract\_if and HashSet::extract\_if* - (3 checkboxes left)
  - merge rust.tf/130801 *Tracking Issue for \`const\_mut\_cursor\`* - (3 checkboxes left)
  - merge rust.tf/129041 *Tracking Issue for \`const\_vec\_string\_slice\`* - (3 checkboxes left)
  - merge rust.tf/97601 *Tracking Issue for map\_many\_mut* - (3 checkboxes left)
  - merge rust.tf/134340 *Stabilize \`num\_midpoint\_signed\` feature* - (3 checkboxes left)
  - merge rust.tf/103806 *Tracking Issue for \`string\_extend\_from\_within\`* - (3 checkboxes left)
  - merge rust.tf/131923 *Derive \`Copy\` and \`Hash\` for \`IntErrorKind\`* - (3 checkboxes left)
  - merge rust.tf/134272 *make rustc\_encodable\_decodable feature properly unstable* - (3 checkboxes left)
  - merge rust.tf/134995 *Stabilize const\_slice\_flatten* - (3 checkboxes left)
  - merge rust.tf/135414 *Stabilize \`const\_black\_box\`* - (5 checkboxes left)

[scottmcm (3)](https://rfcbot.rs/fcp/scottmcm), [BurntSushi (17)](https://rfcbot.rs/fcp/BurntSushi), [nikomatsakis (2)](https://rfcbot.rs/fcp/nikomatsakis), [tmandry (2)](https://rfcbot.rs/fcp/tmandry), [pnkfelix (1)](https://rfcbot.rs/fcp/pnkfelix), [Amanieu (8)](https://rfcbot.rs/fcp/Amanieu), [dtolnay (1)](https://rfcbot.rs/fcp/dtolnay), [joshtriplett (11)](https://rfcbot.rs/fcp/joshtriplett), [m-ou-se (14)](https://rfcbot.rs/fcp/m-ou-se)

### (nominated) rust.tf/127154 *Tracking Issue for anonymous pipe API*

open question: which module to put this in

mostly weak opinions

Mara: pipe::pipe() and pipe::PipeReader etc. is repetitive. slightly prefer io

David: +1

JoshT not present in the meeting, but said no preference in the github thread

Amanieu: prefer keeping it in std::pipe. Doesn't fit with what's currently in std::io

Amanieu: modules are mostly useful for documentation, to have an overview of things that belong together.

David: Do you import `std::mem` or import `std::mem::thing`? For pipe, importing `pipe()` is a bit short, but `pipe::pipe()` is unappealing. `io::pipe()` looks fine.

Mara: docs would be on `pipe()`, the types are just helpers basically.

Amanieu: fair

The 8472: We might want to have docs on how to use pipes in other places

consensus: std::io

Mara left a comment.

### (nominated) rust.tf/127292 *Tracking Issue for PathBuf::add\_extension and Path::with\_added\_extension*

Mara: I feel that push/join are specific to handling the behaviour of adding/removing `/` etc., which is not what the extension methods do. So mildly against the proposed name change, but wouldn't object.

David: This does mirror that behaviour for `.`.

Mara: That's fair.

The 8472: What if one adds an extension to a path with a trailing slash? It's not in the docs.

  - Answer: "/directory/".with_added_extension("rs") is "/directory.rs"

Amanieu: We did have a discussion on the name before, in the ACP. 

```
    let mut p = PathBuf::from("foo/bar/");
    dbg!(&p);
    dbg!(p.with_added_extension(".bar"));
```

prints

```
[src/main.rs:7:5] &p = "foo/bar/"
[src/main.rs:8:5] p.with_added_extension(".bar") = "foo/bar..bar"
```

The 8472: I don't think the edge cases are worked out yet, maybe we shouldn't stabilize it.

Chris: Trailing `/` is ignored in normalization

David: Is there an api for pushing onto the filename without adding a `.`? Join fits better, because that includes adding the `.` intelligently.

David: push naming extends better to adding without a `.` if we add that later.

David: fine with either name

Amanieu: let's go with the original name

David: sounds good

consensus

Amanieu to reply.

### (nominated) rust.tf/127527 *Tracking Issue for \`once\_wait\`*

No reason to not also include wait_force

FCP proposed.

### (nominated) rust.tf/131923 *Derive \`Copy\` and \`Hash\` for \`IntErrorKind\`*

Proposed FCP

### (nominated) rust.tf/133908 *Tracking Issue for Wasm floating point instructions not in \`core\`*

Amanieu: The regular float methods might work in core at some point

David: How far in the future?

Amanieu: Few months. Blocked on compiler-builtin support. Have to ask trevor. Non-wasm platforms need a softfloat implementation.

David: If there's a crate that provides these, that's enough to cover a few months.

Amanieu: wasm inline asm isn't stable, so not really possible.

The 8472: You could import the functions from the wasm host.

David: I think it's fine to include these in core::arch then

Amanieu: Looks like we can have these float ops in core in a month. Fine to wait then.

Mara: Fine with me to add them

Amanieu: Let's defer for a month. No urgency

consensus: wait a bit.

### (nominated) rust.tf/134283 *fix(libtest): Deprecate '\-\-logfile'*

Ed page commented with clarifications

the format of the text going in to the log file is undocumented

Amanieu: happy to deprecate, since the format is undocumented.

Amanieu will start FCP to deprecate.

### (waiting on team) rust.tf/133829 *AtomicT::fetch\_update\_infallible*

we did suggestion for `update` and `try_update` and (deprecating `fetch_update`) before

amanieu to comment, clarifying that that's what we want (as unstable) for now.

return type: return old value? return both old and new (as tuple, or struct)? return nothing?

Mara: not returning something from update() might be okay, but from try_update you do want the results. might be fine to just try out in the unstable period.

### (waiting on team) rust.tf/134272 *make rustc\_encodable\_decodable feature properly unstable*

clicked checkbox.

### (waiting on team) rust.tf/134679 *Windows: remove readonly files*

in FCP now.

### (waiting on team) rust.tf/135415 *Add \`File already exists\` error doc to \`hard\_link\` function*

Needs a newline!

Amanieu: Agree that hard_link fails if a file already exists? That's the current behaviour on all platforms.

FCP

### (new change proposal) rust.tf/libs520 *Add out of the box support for mapping custom error types that implement \`std::error::Error' to \`Box\<dyn Error\>\`*

The motivation is not good because `?` by itself works there.

### (new change proposal) rust.tf/libs513 *Implement IntoIterator for tuples with values which are IntoIterator themselves*

Discussed in a previous week. Closing.

### (new change proposal) rust.tf/libs509 *Mark \`OnceState::poison\` as \`pub\`*

David to comment with analysis of another use case.

### (new change proposal) rust.tf/libs508 *impl\<A\> Allocator for &mut A*

Amanieu to ask for a better code example.

### (new change proposal) rust.tf/libs506 *In\-place \`String::replace\_first\` and \`String::replace\_last\`*

Needs opinion from BurntSushi.

### (new change proposal) rust.tf/libs505 *A datatype representing an allocation*

Discussed previously, we asked for some additional feedback but can close it now.

The 8472 to leave a closing comment.

### (new change proposal) rust.tf/libs504 *Implement Read and Write for Arc\<T\> for types where &T implements Read and Write, \*and\* it is safe to do so.*

Amanieu left a comment asking for an example program that would be helped by this.

### (new change proposal) rust.tf/libs501 *ACP: Add floating point representation conversions*

Amanieu left a comment to the effect that maybe separate extraction methods would be better.

### (new change proposal) rust.tf/libs495 *add an \`extract\` macro which extracts values matched in a pattern*

The 8472 to close.

### (new change proposal) rust.tf/libs487 *Path::is\_trivial*

The hard part was the name.  David proposed `is_monotonic`.  That's the final answer.  He'll write it up and accept the ACP.

### (stalled change proposal) rust.tf/libs314 *Add security\_attributes() to windows::OpenOptionsExt*

The 8472 to ask about details how using OpenOptions is worth it in conjunction with all the low-level code needed.

### (stalled change proposal) rust.tf/libs344 *ACP: Add \`std::string::String::replace\_and\_count\` and/or \`replace\_with\`*

### (stalled change proposal) rust.tf/libs336 *Add \`or\_try\_\*\` variants for HashMap and BTreeMap Entry APIs*

### (stalled change proposal) rust.tf/libs210 *Add associated consts to f32, f64 for mathematical constants*

### (stalled change proposal) rust.tf/libs364 *ACP: Add {Box, Rc, Arc}::map and {Box, Rc, Arc}::try\_map*

### (stalled change proposal) rust.tf/libs192 *Report allocation errors through the panic handler*

### (stalled change proposal) rust.tf/libs155 *Arbitrary alternate flags in \`std::fmt::Formatter\`*

### (stalled change proposal) rust.tf/libs186 *Implementing flatten for \`Option\<&Option\<T\>\>\` and \`Option\<&mut Option\<T\>\>\`*

### (stalled change proposal) rust.tf/libs365 *ACP: \`TwoSidedRange\` trait*

### (stalled change proposal) rust.tf/libs333 *\`NonNull::{from\_ref, from\_mut}\`*


_Generated by [fully-automatic-rust-libs-team-triage-meeting-agenda-generator](https://github.com/rust-lang/libs-team/tree/main/tools/agenda-generator)_
