Skip to content

Remove the trait selection impl in method::probe - #43880

Merged
bors merged 5 commits into
rust-lang:masterfrom
arielb1:noninvasive-probe
Aug 30, 2017
Merged

Remove the trait selection impl in method::probe#43880
bors merged 5 commits into
rust-lang:masterfrom
arielb1:noninvasive-probe

Conversation

@arielb1

Copy link
Copy Markdown
Contributor

This removes the hacky trait selection reimplementation in method::probe, which occasionally comes and causes problems.

There are 2 issues I've found with this approach:

  1. The older implementation sometimes had a "guess" type from an impl, which allowed subtyping to work. This is why I needed to make a change in libtest: there's an impl<A> Clone for fn(A) and we're calling <for<'a> fn(&'a T) as Clone>::clone. The older implementation would do a subtyping between the impl type and the trait type, so it would do the check for <fn(A) as Clone>::clone, and confirmation would continue with the subtyping. The newer implementation directly passes <for<'a> fn(&'a T) as Clone>::clone to selection, which fails. I'm not sure how big of a problem that would be in reality, especially after Generate builtin impls for Clone #43690 would remove the Clone problem, but I still want a crater run to avoid breaking the world.
  2. The older implementation "looked into" impls to display error messages. I'm not sure that's an advantage - it looked exactly 1 level deep.

r? @eddyb

@arielb1arielb1 added the S-waiting-on-crater Status: Waiting on a crater run to be completed. label Aug 15, 2017
@arielb1arielb1 changed the title [WIP] Remove the selection impl in method::probe[WIP] Remove the trait selection impl in method::probeAug 15, 2017
@eddyb

Copy link
Copy Markdown
Contributor

LGTM (modulo how it fares in the wild, which is yet to be seen) r? @nikomatsakis

@eddyb

Copy link
Copy Markdown
Contributor

@bors try

@bors

bors commented Aug 15, 2017

Copy link
Copy Markdown
Collaborator

⌛ Trying commit 7aecbc38c5c70f730eccb571290d02094cb9b6af with merge b96d5eea76e758bdd82fd4169eb4d5f7e3ce4fe2...

@bors

bors commented Aug 15, 2017

Copy link
Copy Markdown
Collaborator

☀️ Test successful - status-travis
State: approved= try=True

@eddyb

Copy link
Copy Markdown
Contributor

cc @rust-lang/infra Cargobomb requested.

@bors

bors commented Aug 16, 2017

Copy link
Copy Markdown
Collaborator

☔ The latest upstream changes (presumably #43710) made this pull request unmergeable. Please resolve the merge conflicts.

@arielb1

Copy link
Copy Markdown
ContributorAuthor

I think I'm comfortable with landing this refactor the way it is, provided crater agrees.

@aidanhs

Copy link
Copy Markdown
Contributor

Cargobomb run has started.

@nikomatsakis

Copy link
Copy Markdown
Contributor

I read over the changes and r=me once we see the cargobomb results.

@arielb1arielb1 changed the title [WIP] Remove the trait selection impl in method::probeRemove the trait selection impl in method::probeAug 20, 2017
@aidanhs

Copy link
Copy Markdown
Contributor

@arielb1

Copy link
Copy Markdown
ContributorAuthor
ai-0.1.0 test-pass test-fail - flaky
ceramic-0.3.0 test-pass test-fail - looks dubious?
hashconsing-0.3.0 test-pass test-fail - flaky
idna-0.1.4 test-pass test-fail - clone of libtest
ldap3-0.5.0 test-fail build-fail - interesting
nss-sys-0.1.9 test-pass test-fail - "error: An unknown error occurred"?
parking_lot_mpsc-0.1.5-alpha.1 test-pass test-fail - looks flaky?
rustc-test-0.1.5 test-pass build-fail - clone of libtest
rustc-test-0.2.0 test-pass build-fail - clone of libtest
yggie.mach.b1c15026e0f31117d0d54ee6eeaeadd3e94a3d92 test-pass test-fail
- [quickcheck] TEST FAILED (runtime error). Arguments: (UnitVec3D(Vec3D { x: -0.08164979, y: 0.41588578, z: -0.905744 }), UnitQuat(Quat { r: -0.9998616, i: 0.00013082517, j: -0.012743562, k: 0.010695696 }))
- looks spurious

I think this has to depend on #43690 because that should fix the (benchfn.clone()) problem.

@arielb1

Copy link
Copy Markdown
ContributorAuthor

LDAP report:

Aug 19 09:54:47.599 INFO testing ldap3-0.5.0 against try#b96d5eea76e758bdd82fd4169eb4d5f7e3ce4fe2 for pr-43880
Aug 19 09:54:47.599 INFO running: cargo +b96d5eea76e758bdd82fd4169eb4d5f7e3ce4fe2 build --frozen
Aug 19 09:54:47.599 INFO creating container for: cargo +b96d5eea76e758bdd82fd4169eb4d5f7e3ce4fe2 build --frozen
Aug 19 09:54:47.599 INFO running `"docker" "create" "-v" "/home/ec2-user/cargobomb/./work/local/test-source/pr-43880/try#b96d5eea76e758bdd82fd4169eb4d5f7e3ce4fe2:/source:ro,Z" "-v" "/home/ec2-user/cargobomb/./work/local/target-dirs/pr-43880/try#b96d5eea76e758bdd82fd4169eb4d5f7e3ce4fe2:/target:rw,Z" "-v" "/home/ec2-user/cargobomb/./work/local/cargo-home:/cargo-home:ro,Z" "-v" "/home/ec2-user/cargobomb/./work/local/rustup-home:/rustup-home:ro,Z" "-e" "USER_ID=500" "-e" "CMD=cargo +b96d5eea76e758bdd82fd4169eb4d5f7e3ce4fe2 build --frozen" "cargobomb"`
Aug 19 09:54:47.673 INFO blam! 9fc7035ce68cfa6644c99cbc35ad850fd22cb7666409104c55eb40cfa186023c
Aug 19 09:54:47.674 INFO running `"docker" "start" "-a" "9fc7035ce68cfa6644c99cbc35ad850fd22cb7666409104c55eb40cfa186023c"`
Aug 19 09:54:48.186 INFO kablam! Compiling ldap3 v0.5.0 (file:///source)
Aug 19 09:54:49.482 INFO kablam! error[E0308]: mismatched types
Aug 19 09:54:49.482 INFO kablam! --> src/ldap.rs:235:42
Aug 19 09:54:49.482 INFO kablam! |
Aug 19 09:54:49.482 INFO kablam! 235 | let result = self.inner.call((req, Box::new(move |msgid| *closure_assigned_msgid.borrow_mut() = msgid))).select2(timeout).then(move |res| {
Aug 19 09:54:49.482 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait std::ops::Fn, found closure
Aug 19 09:54:49.482 INFO kablam! |
Aug 19 09:54:49.482 INFO kablam! = note: expected type `(ldap::LdapOp, std::boxed::Box<std::ops::Fn(i32) + 'static>)`
Aug 19 09:54:49.483 INFO kablam! found type `(ldap::LdapOp, std::boxed::Box<[closure@src/ldap.rs:235:57: 235:114 closure_assigned_msgid:_]>)`
Aug 19 09:54:49.483 INFO kablam! Aug 19 09:54:49.489 INFO kablam! error[E0308]: mismatched types
Aug 19 09:54:49.489 INFO kablam! --> src/ldap.rs:259:38
Aug 19 09:54:49.489 INFO kablam! |
Aug 19 09:54:49.489 INFO kablam! 259 | Box::new(self.inner.call((req, Box::new(|_msgid| ()))).and_then(|(tag, vec)| Ok(LdapResponse(tag, vec))))
Aug 19 09:54:49.489 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait std::ops::Fn, found closure
Aug 19 09:54:49.489 INFO kablam! |
Aug 19 09:54:49.489 INFO kablam! = note: expected type `(ldap::LdapOp, std::boxed::Box<std::ops::Fn(i32) + 'static>)`
Aug 19 09:54:49.489 INFO kablam! found type `(ldap::LdapOp, std::boxed::Box<[closure@src/ldap.rs:259:53: 259:64]>)`
Aug 19 09:54:49.489 INFO kablam! Aug 19 09:54:49.770 INFO kablam! error: aborting due to 2 previous errors
Aug 19 09:54:49.770 INFO kablam! Aug 19 09:54:49.793 INFO kablam! error: Could not compile `ldap3`.
Aug 19 09:54:49.793 INFO kablam! Aug 19 09:54:49.793 INFO kablam! To learn more, run the command again with --verbose.
Aug 19 09:54:49.796 INFO kablam! su: No module specific data is present
Aug 19 09:54:50.119 INFO running `"docker" "rm" "-f" "9fc7035ce68cfa6644c99cbc35ad850fd22cb7666409104c55eb40cfa186023c"`
Aug 19 09:54:50.136 INFO blam! 9fc7035ce68cfa6644c99cbc35ad850fd22cb7666409104c55eb40cfa186023c

@arielb1

Copy link
Copy Markdown
ContributorAuthor

I think I fixed the LDAP problem with the new commit.

@bors

bors commented Aug 22, 2017

Copy link
Copy Markdown
Collaborator

☔ The latest upstream changes (presumably #43690) made this pull request unmergeable. Please resolve the merge conflicts.

@arielb1

Copy link
Copy Markdown
ContributorAuthor

Now that the Clone issue is fixed, I think we can land this.

@arielb1arielb1 added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-crater Status: Waiting on a crater run to be completed. labels Aug 22, 2017
the data serves no purpose - it can be recovered from the obligation -
and I think may leak stale inference variables into global caches.
This fixes a few cases of inference misses, some of them regressions
caused by the impl selected for a method not being immediately evaluated.
@arielb1

Copy link
Copy Markdown
ContributorAuthor

Ready for review, assuming higher-ranked function pointers will still impl Clone this release.

@nikomatsakis

Copy link
Copy Markdown
Contributor

@bors r+

assuming higher-ranked function pointers will still impl Clone this release.

That part in particular doesn't seem to be controversial, I think...?

@bors

bors commented Aug 29, 2017

Copy link
Copy Markdown
Collaborator

📌 Commit 15f6540 has been approved by nikomatsakis

@arielb1

Copy link
Copy Markdown
ContributorAuthor

That part in particular doesn't seem to be controversial, I think...?

It can't be, given that they are already Copy

@arielb1arielb1 added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Aug 29, 2017
@bors

bors commented Aug 30, 2017

Copy link
Copy Markdown
Collaborator

⌛ Testing commit 15f6540 with merge b58e31a...

bors added a commit that referenced this pull request Aug 30, 2017
Remove the trait selection impl in method::probe
This removes the hacky trait selection reimplementation in `method::probe`, which occasionally comes and causes problems.
There are 2 issues I've found with this approach:
1. The older implementation sometimes had a "guess" type from an impl, which allowed subtyping to work. This is why I needed to make a change in `libtest`: there's an `impl<A> Clone for fn(A)` and we're calling `<for<'a> fn(&'a T) as Clone>::clone`. The older implementation would do a subtyping between the impl type and the trait type, so it would do the check for `<fn(A) as Clone>::clone`, and confirmation would continue with the subtyping. The newer implementation directly passes `<for<'a> fn(&'a T) as Clone>::clone` to selection, which fails. I'm not sure how big of a problem that would be in reality, especially after #43690 would remove the `Clone` problem, but I still want a crater run to avoid breaking the world.
2. The older implementation "looked into" impls to display error messages. I'm not sure that's an advantage - it looked exactly 1 level deep.
r? @eddyb
@bors

bors commented Aug 30, 2017

Copy link
Copy Markdown
Collaborator

☀️ Test successful - status-appveyor, status-travis
Approved by: nikomatsakis
Pushing b58e31a to master...

@bors
bors merged commit 15f6540 into rust-lang:masterAug 30, 2017
@SimonSapin

Copy link
Copy Markdown
Contributor

This broke Servo. With have a fix (servo/servo#18327), but this does reject real code that was previously accepted. This should at least be noted in release notes.

@alexcrichtonalexcrichton added the relnotes Marks issues that should be documented in the release notes of the next release. label Aug 31, 2017
@nikomatsakis

Copy link
Copy Markdown
Contributor

@SimonSapin Indeed -- I'm trying to figure out what is going on in that PR. Can you dump the struct definition on which the traceable derive was failing?

@nikomatsakis

Copy link
Copy Markdown
Contributor

@SimonSapin I opened #44224 to discuss and decide on a resolution. Thanks for the regression report!

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Nov 3, 2017
Changelog:
Version 1.21.0 (2017-10-12)
==========================
Language
--------
- [You can now use static references for literals.][43838]
Example:
```rust
fn main() {
let x: &'static u32 = &0;
}
```
- [Relaxed path syntax. Optional `::` before `<` is now allowed in all contexts.][43540]
Example:
```rust
my_macro!(Vec<i32>::new); // Always worked
my_macro!(Vec::<i32>::new); // Now works
```
Compiler
--------
- [Upgraded jemalloc to 4.5.0][43911]
- [Enabled unwinding panics on Redox][43917]
- [Now runs LLVM in parallel during translation phase.][43506]
This should reduce peak memory usage.
Libraries
---------
- [Generate builtin impls for `Clone` for all arrays and tuples that
are `T: Clone`][43690]
- [`Stdin`, `Stdout`, and `Stderr` now implement `AsRawFd`.][43459]
- [`Rc` and `Arc` now implement `From<&[T]> where T: Clone`, `From<str>`,
`From<String>`, `From<Box<T>> where T: ?Sized`, and `From<Vec<T>>`.][42565]
Stabilized APIs
---------------
[`std::mem::discriminant`]
Cargo
-----
- [You can now call `cargo install` with multiple package names][cargo/4216]
- [Cargo commands inside a virtual workspace will now implicitly
pass `--all`][cargo/4335]
- [Added a `[patch]` section to `Cargo.toml` to handle
prepublication dependencies][cargo/4123] [RFC 1969]
- [`include` & `exclude` fields in `Cargo.toml` now accept gitignore
like patterns][cargo/4270]
- [Added the `--all-targets` option][cargo/4400]
- [Using required dependencies as a feature is now deprecated and emits
a warning][cargo/4364]
Misc
----
- [Cargo docs are moving][43916]
to [doc.rust-lang.org/cargo](https://doc.rust-lang.org/cargo)
- [The rustdoc book is now available][43863]
at [doc.rust-lang.org/rustdoc](https://doc.rust-lang.org/rustdoc)
- [Added a preview of RLS has been made available through rustup][44204]
Install with `rustup component add rls-preview`
- [`std::os` documentation for Unix, Linux, and Windows now appears on doc.rust-lang.org][43348]
Previously only showed `std::os::unix`.
Compatibility Notes
-------------------
- [Changes in method matching against higher-ranked types][43880] This may cause
breakage in subtyping corner cases. [A more in-depth explanation is available.][info/43880]
- [rustc's JSON error output's byte position start at top of file.][42973]
Was previously relative to the rustc's internal `CodeMap` struct which
required the unstable library `libsyntax` to correctly use.
- [`unused_results` lint no longer ignores booleans][43728]
[42565]: rust-lang/rust#42565
[42973]: rust-lang/rust#42973
[43348]: rust-lang/rust#43348
[43459]: rust-lang/rust#43459
[43506]: rust-lang/rust#43506
[43540]: rust-lang/rust#43540
[43690]: rust-lang/rust#43690
[43728]: rust-lang/rust#43728
[43838]: rust-lang/rust#43838
[43863]: rust-lang/rust#43863
[43880]: rust-lang/rust#43880
[43911]: rust-lang/rust#43911
[43916]: rust-lang/rust#43916
[43917]: rust-lang/rust#43917
[44204]: rust-lang/rust#44204
[cargo/4123]: rust-lang/cargo#4123
[cargo/4216]: rust-lang/cargo#4216
[cargo/4270]: rust-lang/cargo#4270
[cargo/4335]: rust-lang/cargo#4335
[cargo/4364]: rust-lang/cargo#4364
[cargo/4400]: rust-lang/cargo#4400
[RFC 1969]: rust-lang/rfcs#1969
[info/43880]: rust-lang/rust#44224 (comment)
[`std::mem::discriminant`]: https://doc.rust-lang.org/std/mem/fn.discriminant.html
bors added a commit that referenced this pull request Nov 13, 2017
check::method - unify receivers before normalizing method signatures
Normalizing method signatures can unify inference variables, which can
cause receiver unification to fail. Unify the receivers first to avoid
that.
Fixes#36701.
Fixes#45801.
Fixes#45855.
r? @eddyb
beta-nominating because #43880 made this ICE happen in more cases (the code in that issue ICEs post-#43880 only, but the unit test here ICEs on all versions).
arielb1 pushed a commit to arielb1/rust that referenced this pull request Nov 14, 2017
check::method - unify receivers before normalizing method signatures
Normalizing method signatures can unify inference variables, which can
cause receiver unification to fail. Unify the receivers first to avoid
that.
Fixesrust-lang#36701.
Fixesrust-lang#45801.
Fixesrust-lang#45855.
r? @eddyb
beta-nominating because rust-lang#43880 made this ICE happen in more cases (the code in that issue ICEs post-rust-lang#43880 only, but the unit test here ICEs on all versions).
msk pushed a commit to msk/pkgsrc that referenced this pull request May 11, 2026
Changelog:
Version 1.21.0 (2017-10-12)
==========================
Language
--------
- [You can now use static references for literals.][43838]
Example:
```rust
fn main() {
let x: &'static u32 = &0;
}
```
- [Relaxed path syntax. Optional `::` before `<` is now allowed in all contexts.][43540]
Example:
```rust
my_macro!(Vec<i32>::new); // Always worked
my_macro!(Vec::<i32>::new); // Now works
```
Compiler
--------
- [Upgraded jemalloc to 4.5.0][43911]
- [Enabled unwinding panics on Redox][43917]
- [Now runs LLVM in parallel during translation phase.][43506]
This should reduce peak memory usage.
Libraries
---------
- [Generate builtin impls for `Clone` for all arrays and tuples that
are `T: Clone`][43690]
- [`Stdin`, `Stdout`, and `Stderr` now implement `AsRawFd`.][43459]
- [`Rc` and `Arc` now implement `From<&[T]> where T: Clone`, `From<str>`,
`From<String>`, `From<Box<T>> where T: ?Sized`, and `From<Vec<T>>`.][42565]
Stabilized APIs
---------------
[`std::mem::discriminant`]
Cargo
-----
- [You can now call `cargo install` with multiple package names][cargo/4216]
- [Cargo commands inside a virtual workspace will now implicitly
pass `--all`][cargo/4335]
- [Added a `[patch]` section to `Cargo.toml` to handle
prepublication dependencies][cargo/4123] [RFC 1969]
- [`include` & `exclude` fields in `Cargo.toml` now accept gitignore
like patterns][cargo/4270]
- [Added the `--all-targets` option][cargo/4400]
- [Using required dependencies as a feature is now deprecated and emits
a warning][cargo/4364]
Misc
----
- [Cargo docs are moving][43916]
to [doc.rust-lang.org/cargo](https://doc.rust-lang.org/cargo)
- [The rustdoc book is now available][43863]
at [doc.rust-lang.org/rustdoc](https://doc.rust-lang.org/rustdoc)
- [Added a preview of RLS has been made available through rustup][44204]
Install with `rustup component add rls-preview`
- [`std::os` documentation for Unix, Linux, and Windows now appears on doc.rust-lang.org][43348]
Previously only showed `std::os::unix`.
Compatibility Notes
-------------------
- [Changes in method matching against higher-ranked types][43880] This may cause
breakage in subtyping corner cases. [A more in-depth explanation is available.][info/43880]
- [rustc's JSON error output's byte position start at top of file.][42973]
Was previously relative to the rustc's internal `CodeMap` struct which
required the unstable library `libsyntax` to correctly use.
- [`unused_results` lint no longer ignores booleans][43728]
[42565]: rust-lang/rust#42565
[42973]: rust-lang/rust#42973
[43348]: rust-lang/rust#43348
[43459]: rust-lang/rust#43459
[43506]: rust-lang/rust#43506
[43540]: rust-lang/rust#43540
[43690]: rust-lang/rust#43690
[43728]: rust-lang/rust#43728
[43838]: rust-lang/rust#43838
[43863]: rust-lang/rust#43863
[43880]: rust-lang/rust#43880
[43911]: rust-lang/rust#43911
[43916]: rust-lang/rust#43916
[43917]: rust-lang/rust#43917
[44204]: rust-lang/rust#44204
[cargo/4123]: rust-lang/cargo#4123
[cargo/4216]: rust-lang/cargo#4216
[cargo/4270]: rust-lang/cargo#4270
[cargo/4335]: rust-lang/cargo#4335
[cargo/4364]: rust-lang/cargo#4364
[cargo/4400]: rust-lang/cargo#4400
[RFC 1969]: rust-lang/rfcs#1969
[info/43880]: rust-lang/rust#44224 (comment)
[`std::mem::discriminant`]: https://doc.rust-lang.org/std/mem/fn.discriminant.html
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request May 13, 2026
Changelog:
Version 1.21.0 (2017-10-12)
==========================
Language
--------
- [You can now use static references for literals.][43838]
Example:
```rust
fn main() {
let x: &'static u32 = &0;
}
```
- [Relaxed path syntax. Optional `::` before `<` is now allowed in all contexts.][43540]
Example:
```rust
my_macro!(Vec<i32>::new); // Always worked
my_macro!(Vec::<i32>::new); // Now works
```
Compiler
--------
- [Upgraded jemalloc to 4.5.0][43911]
- [Enabled unwinding panics on Redox][43917]
- [Now runs LLVM in parallel during translation phase.][43506]
This should reduce peak memory usage.
Libraries
---------
- [Generate builtin impls for `Clone` for all arrays and tuples that
are `T: Clone`][43690]
- [`Stdin`, `Stdout`, and `Stderr` now implement `AsRawFd`.][43459]
- [`Rc` and `Arc` now implement `From<&[T]> where T: Clone`, `From<str>`,
`From<String>`, `From<Box<T>> where T: ?Sized`, and `From<Vec<T>>`.][42565]
Stabilized APIs
---------------
[`std::mem::discriminant`]
Cargo
-----
- [You can now call `cargo install` with multiple package names][cargo/4216]
- [Cargo commands inside a virtual workspace will now implicitly
pass `--all`][cargo/4335]
- [Added a `[patch]` section to `Cargo.toml` to handle
prepublication dependencies][cargo/4123] [RFC 1969]
- [`include` & `exclude` fields in `Cargo.toml` now accept gitignore
like patterns][cargo/4270]
- [Added the `--all-targets` option][cargo/4400]
- [Using required dependencies as a feature is now deprecated and emits
a warning][cargo/4364]
Misc
----
- [Cargo docs are moving][43916]
to [doc.rust-lang.org/cargo](https://doc.rust-lang.org/cargo)
- [The rustdoc book is now available][43863]
at [doc.rust-lang.org/rustdoc](https://doc.rust-lang.org/rustdoc)
- [Added a preview of RLS has been made available through rustup][44204]
Install with `rustup component add rls-preview`
- [`std::os` documentation for Unix, Linux, and Windows now appears on doc.rust-lang.org][43348]
Previously only showed `std::os::unix`.
Compatibility Notes
-------------------
- [Changes in method matching against higher-ranked types][43880] This may cause
breakage in subtyping corner cases. [A more in-depth explanation is available.][info/43880]
- [rustc's JSON error output's byte position start at top of file.][42973]
Was previously relative to the rustc's internal `CodeMap` struct which
required the unstable library `libsyntax` to correctly use.
- [`unused_results` lint no longer ignores booleans][43728]
[42565]: rust-lang/rust#42565
[42973]: rust-lang/rust#42973
[43348]: rust-lang/rust#43348
[43459]: rust-lang/rust#43459
[43506]: rust-lang/rust#43506
[43540]: rust-lang/rust#43540
[43690]: rust-lang/rust#43690
[43728]: rust-lang/rust#43728
[43838]: rust-lang/rust#43838
[43863]: rust-lang/rust#43863
[43880]: rust-lang/rust#43880
[43911]: rust-lang/rust#43911
[43916]: rust-lang/rust#43916
[43917]: rust-lang/rust#43917
[44204]: rust-lang/rust#44204
[cargo/4123]: rust-lang/cargo#4123
[cargo/4216]: rust-lang/cargo#4216
[cargo/4270]: rust-lang/cargo#4270
[cargo/4335]: rust-lang/cargo#4335
[cargo/4364]: rust-lang/cargo#4364
[cargo/4400]: rust-lang/cargo#4400
[RFC 1969]: rust-lang/rfcs#1969
[info/43880]: rust-lang/rust#44224 (comment)
[`std::mem::discriminant`]: https://doc.rust-lang.org/std/mem/fn.discriminant.html
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

relnotesMarks issues that should be documented in the release notes of the next release.S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@arielb1@eddyb@bors@aidanhs@nikomatsakis@SimonSapin@alexcrichton