---
# System prepended metadata

title: Libs Meeting 2021-03-03/04
tags: [Minutes, Libs Meetings]

---

# Libs Meeting 2021-03-03/04

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

**Attendees**: Jane, JoshTriplett, sfackler, dtolnay, Amanieu, djc, Mara

## Agenda

- [Open action items](https://hackmd.io/ovrbJj6CRduRgSA0Wzg2zg)
- New prelude
  - [RFC 3090](https://github.com/rust-lang/rfcs/pull/3090)
    - Some small changes for edition 2021.
    - More changes for all editions. Lots of bikeshedding. Needs a more general policy.
    - Summary of comments [here](https://github.com/rust-lang/rfcs/pull/3090#issuecomment-789816556)
  - Implementation for edition-specific preludes: [[82217](https://github.com/rust-lang/rust/pull/82217)] (open)
- Lots of feedback on [[62633](https://github.com/rust-lang/rust/issues/62633)] (Option::expect\_none and unwrap\_none), disagreeing with our FCP to close
- Copy `Range` types
  - Additional types vs making current types `Copy` with `#[must_clone]`
  - Additional types proposal from sfackler: [[hackmd](https://hackmd.io/cM22mZ5JRH2RAdSART8bWQ)]
    - Naming new types is hard. [`#[rustc_per_edition]` aliases](https://github.com/rust-lang/rust/pull/82489) could work, but not sure if we should.
  - `#[must_clone]` / `MustClone`: See [eddyb's comment](https://github.com/rust-lang/rfcs/issues/2848#issuecomment-697257283) and [their experimental implementation](https://github.com/rust-lang/rust/pull/77180)
- `IntoIterator` for arrays
  - PR: [65819](https://github.com/rust-lang/rust/pull/65819)
  - Has been stuck forever. Not clear how to continue. Can the new edition help?
- Triage
- Anything else?

## Triage

### FCPs

2 open T-libs FCPs:
<details><summary><a href="https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3Aproposed-final-comment-period">2 <code>rust-lang/rust</code> FCPs</a></summary>

  - [[merge 81050](https://github.com/rust-lang/rust/issues/81050#issuecomment-765341798)] *Stabilize core::task::ready!* - (2 checkboxes left)
  - [[merge 77704](https://github.com/rust-lang/rust/issues/77704#issuecomment-760056634)] *Implement indexing slices with pairs of core::ops::Bound&lt;usize&gt;* - (2 checkboxes left)
</details>
<p></p>

[Amanieu (1)](https://rfcbot.rs/fcp/Amanieu), [BurntSushi (2)](https://rfcbot.rs/fcp/BurntSushi), [KodrAus (0)](https://rfcbot.rs/fcp/KodrAus), [dtolnay (0)](https://rfcbot.rs/fcp/dtolnay), [joshtriplett (0)](https://rfcbot.rs/fcp/joshtriplett), [m-ou-se (1)](https://rfcbot.rs/fcp/m-ou-se), [sfackler (0)](https://rfcbot.rs/fcp/sfackler)

### Nominated

- [2 `rust-lang/rfcs` items](https://github.com/rust-lang/rfcs/issues?q=is%3Aopen+label%3AT-libs+label%3AI-nominated)
  - [[2979](https://github.com/rust-lang/rfcs/pull/2979)] *\[RFC\]: Libs Team Governance*
  - [[3090](https://github.com/rust-lang/rfcs/pull/3090)] *A new prelude for the 2021 edition*
- [5 `rust-lang/rust` items](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3AI-nominated)
  - [[54140](https://github.com/rust-lang/rust/issues/54140)] *Tracking Issue: Procedural Macro Diagnostics (RFC 1566)*
  - [[80149](https://github.com/rust-lang/rust/pull/80149)] *Use getrandom for generating HashMap seed*
  - [[82664](https://github.com/rust-lang/rust/issues/82664)] *regression: reduce on iterator conflicts*
  - [[82665](https://github.com/rust-lang/rust/issues/82665)] *regression: AsRef inference breakage*
  - [[82666](https://github.com/rust-lang/rust/issues/82666)] *regression: unsigned\_abs inherent method conflict*

### Waiting on team

- [0 `rust-lang/rfcs` items](https://github.com/rust-lang/rfcs/issues?q=is%3Aopen+label%3AT-libs+label%3AS-waiting-on-team)
- [4 `rust-lang/rust` items](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3AS-waiting-on-team)
  - [[62633](https://github.com/rust-lang/rust/issues/62633)] *Tracking issue for Option::expect\_none(msg) and unwrap\_none()*
    FCP finished. Should be closed?
  - [[76901](https://github.com/rust-lang/rust/pull/76901)] *Implement RFC 2500 Needle API (Part 1)*
  - [[80771](https://github.com/rust-lang/rust/pull/80771)] *Make NonNull::as\_ref (and friends) return refs with unbound lifetimes*
  - [[81989](https://github.com/rust-lang/rust/pull/81989)] *Add doc aliases for python and Java collections*
      - We may need a general decision here: what criteria do we want to use for adding aliases based on other languages? Proposal: "Popular language, reasonably common function (not an obscure one), unambiguous mapping for what the search should lead to"

### Needs decision

- [10 `rust-lang/rust` items](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3AI-needs-decision)
  - [[25053](https://github.com/rust-lang/rust/issues/25053)] *UnsafeCell should implement the Copy trait*
  - [[26951](https://github.com/rust-lang/rust/issues/26951)] *Abort on some large allocation requests, Panic on other*
  - [[29494](https://github.com/rust-lang/rust/issues/29494)] *Command does not escape arguments as expected on windows*
  - [[37868](https://github.com/rust-lang/rust/issues/37868)] *std::process::Command's current\_dir behaves differently on Unix and Windows, with respect to relative exe paths*
  - [[42412](https://github.com/rust-lang/rust/issues/42412)] *Incorporate @raphlinus' container cheat sheet into the std::collections module docs*
  - [[56889](https://github.com/rust-lang/rust/issues/56889)] *Write::write\_all erroring when encountering Ok(0) interacts poorly with the contract of Write::write*
  - [[59878](https://github.com/rust-lang/rust/issues/59878)] *Box\<\[T\]\> should have an IntoIter implementation.*
      - Backwards-compatibility issue. Could introduce in the future with a transition/edition, and if so, would need a future compatibility lint.
  - [[62726](https://github.com/rust-lang/rust/issues/62726)] *Tracking issue for io\_slice\_advance*
  - [[79490](https://github.com/rust-lang/rust/issues/79490)] *Whether floating point value Display should adhere to IEEE standard?*
      - Josh: :+1:, can we do a quick consensus check on this?
  - [[80823](https://github.com/rust-lang/rust/pull/80823)] *Add Cow::disown\_if() and Cow::disown\_if\_eq()*
      - Josh: Seems fine other than naming


## Notes

Prelude
- Crater run TryInto/TryFrom
  - djc to send PR for crater
- FromIterator has some use cases over .collect() for e.g. HashMap.
  - Probably no breakage in the ecosystem. Try in the same crater run.
- djc to check with compiler team about migration lints
- `drop` was originally only in the prelude because because there was no better module for it yet.
- dtolnay: names in the prelude are things that we wouldn't want people to define in their own crates (e.g. Box, but not Mutex or File (people might want an async File)).
    - Proposed guideline (not a hard requirement): "It would be shocking for the unqualified name to refer to anything other than the std version"
- sfackler: Read/Write could maybe use 'inherent trait impls' - a new language feature/attribute/thing. Lang team seems in favour of this idea. But no concrete proposal yet.
- Mara to write comment

expect_none/unwrap_none
- No new evidence/arguments provided since the previous consensus
- joshtriplett: err_or().unwrap()? (err_or doesn't exist yet)
- Mara to write comment

Range:
- InclusiveRange contains a flag, so wouldn't be the right type for the `Copy` version. So that's not solved with `MustClone`.
- Rename `Range*` to `Range*Iter`? Edition-specific aliases could work. Lots of implementation work (rustdoc etc.)
- `Interval` for the `Copy` name?
- rustfix needs a state that works in both the old and new edition. `Range::new(..)`? `(a..b).into_iter()`?
- sfackler to update RFC

IntoIter for arrays:
- Maybe over the edition? Niko said he'd think about it.
- another crater run?

Regressions:
- Seems acceptable.

## Actions

- [x] Reply to all issues/PRs discussed in this meeting, or add them to the [open action items](https://hackmd.io/ovrbJj6CRduRgSA0Wzg2zg).