---
# System prepended metadata

title: Libs-API Meeting 2023-07-18
tags: [Minutes, Libs Meetings]

---

# Libs-API Meeting 2023-07-18

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

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

## Agenda

- Triage
- Anything else?

## Triage

### FCPs

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

  - merge rust.tf/88581 *Tracking Issue for \`int\_roundings\`* - (1 checkboxes left)
  - merge rust.tf/80437 *Tracking Issue for \`box\_into\_inner\`* - (1 checkboxes left)
  - merge rust.tf/91946 *Tracking Issue for \`io::Error::other\`* - (3 checkboxes left)
  - merge rust.tf/98461 *Document lack of panic safety guarantees of \`Clone::clone\_from\`* - (0 checkboxes left)
  - merge rust.tf/52331 *Correcting Path::components on Redox* - (5 checkboxes left)
  - merge rust.tf/82901 *Tracking Issue for \`Option::get\_or\_insert\_default\`* - (2 checkboxes left)
  - merge rust.tf/83871 *Tracking Issue for CharIndices::offset function* - (4 checkboxes left)
  - merge rust.tf/99262 *Tracking Issue for \`io\_error\_downcast\`* - (4 checkboxes left)
  - merge rust.tf/106655 *Tracking Issue for \`#!\[feature(offset\_of)\]\`* - (0 checkboxes left)
  - merge rust.tf/107587 *Mark \`std\` integral modules as deprecated (\`std::u32\`, \`std::i16\`, etc.)* - (4 checkboxes left)
  - merge rust.tf/113701 *Re\-export core::ffi::FromBytesUntilNulError in std::ffi* - (4 checkboxes left)
  - merge rust.tf/62726 *Tracking issue for io\_slice\_advance* - (3 checkboxes left)

[yaahc (4)](https://rfcbot.rs/fcp/yaahc), [Amanieu (4)](https://rfcbot.rs/fcp/Amanieu), [BurntSushi (8)](https://rfcbot.rs/fcp/BurntSushi), [m-ou-se (7)](https://rfcbot.rs/fcp/m-ou-se), [joshtriplett (5)](https://rfcbot.rs/fcp/joshtriplett), [dtolnay (3)](https://rfcbot.rs/fcp/dtolnay)

### (nominated) rust.tf/98704 *Implement From\<OwnedFd/Handle\> for ChildStdin/out/err object*

Still waiting on review.

### (nominated) rust.tf/113627 *the \`write\_at\` function from \`std::os::unix::prelude::FileExt\` doesn't work as described*

Need to fix the example in the docs to open the file in write mode.

Should link to https://man7.org/linux/man-pages/man2/pwrite.2.html#BUGS and mention that on some targets append mode will override `write_at`.

Amanieu to comment.

### (new change proposal) rust.tf/libs229 *Add \`array::try\_from\_iter\` as safe way of creating a fixed sized \`array\` from an \`IntoIterator\`.*

The8472: Implement FromIterator for Result<[T], Err>,

Amanieu: Non-obvious, better as a method.

The8472: TryFromIterator trait? Could help with faillible allocation.

The8472: iter.by_ref() to keep an iterator with the remaining elements.

Amanieu: Much more discoverable than next_chunk.

The8472: next_array_chunk?

Amanieu: current name is fine.

David: `next_chunk::<N>` much easier than than `try_from_iter::<_, N>`.

Josh: Can use `<const N: usize, I>` with argument `impl Iterator<Item = I>` instead.

The8472: Error if iterator too long?

Amanieu: Error type should be same as next_chunk

David: If length isn't exact, error should be more descriptive

The8472: slice->array try_from requires exact match

David: make next_chunk more discoverable

Amanieu: chunk doesn't come to mind

David: rename next_chunk to  next_array (still unstable)

Josh: No one name that is discoverable for both single array and multiple chunks. `next_chunk` is the right name for chunks.

Amanieu,David: There is space for `next` which also asserts that iterator is empty afterwards.

David: `collect_exact` which returns an array and errors if not exact match.

Amanieu: ACP process says we should accept this and let discussion continue on internals.

Needs more discussions of alternatives (possibly multiple).

The8472 to comment.

### (new change proposal) rust.tf/libs230 *Add \`saturating\_shl\` and \`saturating\_shr\` for ints*

No clear motivation. Is there a need for saturating the shift or saturating the result?

Amanieu: I know there are CPU instructions for saturating the result.

David: open to this but needs clear motivation.

David: close in favor of saturating_mul

`A.saturating_shl(B)` is equivalent to `A.saturating_mul(1 << B)`?
- Yes, except if B is larger than the bit width.

Close asking for more motivation.

Amanieu to comment.

### (new change proposal) rust.tf/libs231 *ACP: Add const fn TypeId::matches for comparing type ids in consts*

### (new change proposal) rust.tf/libs232 *Implement PartialOrd\<str\> for String, PartialOrd\<\[T\] for Vec\<T\>*

Seems OK as long as it passes crater run?

Also tell them to fix their code.

Amanieu to comment.

### (new change proposal) rust.tf/libs247 *Proposal: Add OsStr::to\_mut\_str and OsString::to\_mut\_string*

### (stalled change proposal) rust.tf/libs148 *Expose raw std{in,out,err}*

### (stalled change proposal) rust.tf/libs146 *ACP: \`impl TryFrom\<char\> for u16\`*

### (stalled change proposal) rust.tf/libs145 *ACP: Additional NonZero conversions*

### (stalled change proposal) rust.tf/libs124 *Integrate \`Error\` trait with panic interfaces*

### (stalled change proposal) rust.tf/libs111 *Restructure ptr\_metadata to minimal support*


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