Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

String::as_ref() Into<String> type inference regression #60958

Closed
oherrala opened this issue May 19, 2019 · 23 comments
Closed

String::as_ref() Into<String> type inference regression #60958

oherrala opened this issue May 19, 2019 · 23 comments
Labels
regression-from-stable-to-beta Performance or correctness regression from stable to beta. T-libs-api Relevant to the library API team, which will review and decide on the PR/issue.

Comments

@oherrala
Copy link

The following code has been working with stable compiler (rustc 1.34.2), but doesn't compile with nightly (rustc 1.36.0-nightly (963184b 2019-05-18)).

fn takes_string<S: Into<String>>(input: S) {
    let s = input.into();
    println!("{}", s);
}

fn main() {
    let foo = String::from("Hello world");
    takes_string(foo.as_ref());
}

code in playground

Error the nightly compiler is given:

error[E0283]: type annotations required: cannot resolve `std::string::String: std::convert::AsRef<_>`
  --> src/main.rs:10:22
   |
10 |     takes_string(foo.as_ref());
   |                      ^^^^^^

error: aborting due to previous error

However, stable compiler is happy with the code and prints the expected hello world.

Stable compiler:

rustc 1.34.2 (6c2484dc3 2019-05-13)
binary: rustc
commit-hash: 6c2484dc3c532c052f159264e970278d8b77cdc9
commit-date: 2019-05-13
host: x86_64-apple-darwin
release: 1.34.2
LLVM version: 8.0

Nightly compiler:

rustc 1.36.0-nightly (963184bbb 2019-05-18)
binary: rustc
commit-hash: 963184bbb670c1ffa97fc28a98cd5e8473118859
commit-date: 2019-05-18
host: x86_64-apple-darwin
release: 1.36.0-nightly
LLVM version: 8.0
@jonas-schievink jonas-schievink added I-nominated regression-from-stable-to-nightly Performance or correctness regression from stable to nightly. T-libs-api Relevant to the library API team, which will review and decide on the PR/issue. labels May 19, 2019
@jonas-schievink
Copy link
Contributor

Likely caused by #59825, but considered acceptable breakage.

@smarnach
Copy link
Contributor

This breaks some crates that compiled before, e.g. dipstick and lettre_email. Just curious, why is this considered acceptable in this case?

@jonas-schievink
Copy link
Contributor

These cases can be made to work again by locally elaborating types or the used impl (eg. using <Type as Trait>::method(...) syntax), so the fallout is easy to fix.

@Mark-Simulacrum
Copy link
Member

Mark-Simulacrum commented May 23, 2019 via email

@pietroalbini pietroalbini added regression-from-stable-to-beta Performance or correctness regression from stable to beta. and removed regression-from-stable-to-nightly Performance or correctness regression from stable to nightly. labels May 23, 2019
@smarnach
Copy link
Contributor

@Mark-Simulacrum Thanks for your response. This doesn't cause any problem at all for me – I was just curious about what kind of breakage is permitted and what isn't. I found the commitments in this blog post as well.

@jonas-schievink jonas-schievink added regression-from-stable-to-stable Performance or correctness regression from one stable version to another. regression-from-stable-to-beta Performance or correctness regression from stable to beta. and removed regression-from-stable-to-beta Performance or correctness regression from stable to beta. regression-from-stable-to-stable Performance or correctness regression from one stable version to another. labels May 23, 2019
@bmwill
Copy link

bmwill commented May 24, 2019

I hit this problem today when trying to update to the latest nightly release when one of my dependencies (rustyline) depended on this behavior. Because of this I'm unable to update because I don't control the dependency.

Edit: Looks like rustyline has already fixed this issue upstream. Sorry for the noise :)

Tiwalun added a commit to probe-rs/probe-rs that referenced this issue May 28, 2019
jtgeibel added a commit to jtgeibel/crates.io that referenced this issue May 28, 2019
This will fix our CI on the beta branch, which is currently failing due
to a known breaking inference change.  See rust-lang/rust#60958 for
more info.

I have reviewed the [upstream changes] relative to our current version
and see no issues with the changes there (although we could
alternatively backport just the needed fix).

[upstream changes]: lettre/lettre@v0.9.0...0ead3cd
jtgeibel added a commit to jtgeibel/crates.io that referenced this issue May 29, 2019
This will fix our CI on the beta branch, which is currently failing due
to a known breaking inference change.  See rust-lang/rust#60958 for
more info.

I have reviewed the [upstream changes] relative to our current version
and see no issues with the changes there (although we could
alternatively backport just the needed fix).

[upstream changes]: lettre/lettre@v0.9.0...0ead3cd
bors added a commit to rust-lang/crates.io that referenced this issue May 29, 2019
Update to latest master for lettre and lettre_email

This will fix our CI on the beta branch, which is currently failing due
to a known breaking inference change.  See rust-lang/rust#60958 for
more info.

I have reviewed the [upstream changes] relative to our current version
and see no issues with the changes there (although we could
alternatively backport just the needed fix).

[upstream changes]: lettre/lettre@v0.9.0...0ead3cd
@alexcrichton
Copy link
Member

This libs team discussed this yesterday and agreed this falls within our policy. If anyone has any difficulty upgrading though or working through this, please let us know and we can try to help out.

@Mark-Simulacrum
Copy link
Member

Triaging crater, this caused a number of regressions. Code-ified most of the detailed regression lists below to avoid pinging lots of folks who are not the root cause of the regression; I'm reopening this due to the extent of the ecosystem damage here and re-nominating.

root: rustyline - 73 detected crates which regressed due to this; cc @kkawakam, @gwenn

 * cmdr-0.3.4: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/cmdr-0.3.4/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/cmdr-0.3.4/log.txt); cc @mendelt
 * csv-query-cli-0.4.1: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/csv-query-cli-0.4.1/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/csv-query-cli-0.4.1/log.txt); cc @jaysonsantos
 * davincibot-0.0.19: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/davincibot-0.0.19/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/davincibot-0.0.19/log.txt); cc @NQNStudios
 * eva-0.2.3: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/eva-0.2.3/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/eva-0.2.3/log.txt); cc @NerdyPepper
 * interact_prompt-0.3.3: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/interact_prompt-0.3.3/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/interact_prompt-0.3.3/log.txt); cc @da-x
 * kanils-1.0.1: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/kanils-1.0.1/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/kanils-1.0.1/log.txt); cc @meso
 * lamcal-repl-0.4.0: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/lamcal-repl-0.4.0/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/lamcal-repl-0.4.0/log.txt); cc @haraldmaida
 * lincoln-0.1.0: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/lincoln-0.1.0/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/lincoln-0.1.0/log.txt); cc @earthengine
 * littlewing-0.5.0: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/littlewing-0.5.0/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/littlewing-0.5.0/log.txt); cc @vinc
 * melon-0.14.1: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/melon-0.14.1/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/melon-0.14.1/log.txt); cc @sphinxc0re
 * parsley-0.9.0: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/parsley-0.9.0/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/parsley-0.9.0/log.txt); cc @g-s-k
 * rash-shell-0.1.0: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/rash-shell-0.1.0/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/rash-shell-0.1.0/log.txt); cc @absurdhero
 * red-editor-0.2.1: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/red-editor-0.2.1/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/red-editor-0.2.1/log.txt); cc @badboy
 * reframe-0.1.9: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/reframe-0.1.9/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/reframe-0.1.9/log.txt); cc @anvie
 * sn0int-0.10.0: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/sn0int-0.10.0/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/sn0int-0.10.0/log.txt); cc @kpcyrd
 * sonnerie-0.4.2: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/sonnerie-0.4.2/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/sonnerie-0.4.2/log.txt); cc @njaard
 * upgradedb4pg-0.1.0: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/upgradedb4pg-0.1.0/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/upgradedb4pg-0.1.0/log.txt); cc @hjiayz
 * voile-0.0.3: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/voile-0.0.3/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/voile-0.0.3/log.txt); cc @ice1000
 * Ansvia/reframe: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/Ansvia.reframe/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/Ansvia.reframe/log.txt); cc @Ansvia
 * GyrosOfWar/gfycat_uploader: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/GyrosOfWar.gfycat_uploader/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/GyrosOfWar.gfycat_uploader/log.txt); cc @GyrosOfWar
 * INOVA-Technology/ZSD: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/INOVA-Technology.ZSD/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/INOVA-Technology.ZSD/log.txt); cc @INOVA-Technology
 * Istar-Eldritch/simple-db: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/Istar-Eldritch.simple-db/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/Istar-Eldritch.simple-db/log.txt); cc @Istar-Eldritch
 * JoshMcguigan/monkey: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/JoshMcguigan.monkey/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/JoshMcguigan.monkey/log.txt); cc @JoshMcguigan
 * Kianenigma/c-interpreter: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/Kianenigma.c-interpreter/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/Kianenigma.c-interpreter/log.txt); cc @Kianenigma
 * LiamOW/RustyCalculator: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/LiamOW.RustyCalculator/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/LiamOW.RustyCalculator/log.txt); cc @LiamOW
 * Ludwigette/basic: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/Ludwigette.basic/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/Ludwigette.basic/log.txt); cc @Ludwigette
 * MinusKelvin/lambda-calculus: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/MinusKelvin.lambda-calculus/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/MinusKelvin.lambda-calculus/log.txt); cc @MinusKelvin
 * NQNStudios/davincibot: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/NQNStudios.davincibot/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/NQNStudios.davincibot/log.txt); cc @NQNStudios
 * NerdyPepper/eva: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/NerdyPepper.eva/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/NerdyPepper.eva/log.txt); cc @NerdyPepper
 * PlasmaPower/curve25519-repl: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/PlasmaPower.curve25519-repl/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/PlasmaPower.curve25519-repl/log.txt); cc @PlasmaPower
 * Srynetix/chip8: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/Srynetix.chip8/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/Srynetix.chip8/log.txt); cc @Srynetix
 * Water-bamboo/hello-rust: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/Water-bamboo.hello-rust/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/Water-bamboo.hello-rust/log.txt); cc @Water-bamboo
 * akerber47/knoxide: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/akerber47.knoxide/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/akerber47.knoxide/log.txt); cc @akerber47
 * alex/csv-sql: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/alex.csv-sql/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/alex.csv-sql/log.txt); cc @alex
 * badboy/red: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/badboy.red/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/badboy.red/log.txt); cc @badboy
 * blinry/minitools: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/blinry.minitools/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/blinry.minitools/log.txt); cc @blinry
 * dakatsuka/rust-monkey-lang: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/dakatsuka.rust-monkey-lang/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/dakatsuka.rust-monkey-lang/log.txt); cc @dakatsuka
 * databricks/click: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/databricks.click/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/databricks.click/log.txt); cc @databricks
 * deciduously/blispr: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/deciduously.blispr/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/deciduously.blispr/log.txt); cc @deciduously
 * erikgrinaker/rustcalc: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/erikgrinaker.rustcalc/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/erikgrinaker.rustcalc/log.txt); cc @erikgrinaker
 * fearofcode/arete: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/fearofcode.arete/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/fearofcode.arete/log.txt); cc @fearofcode
 * fredrik-jansson-se/rusty-lisp: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/fredrik-jansson-se.rusty-lisp/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/fredrik-jansson-se.rusty-lisp/log.txt); cc @fredrik-jansson-se
 * g-s-k/rsch: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/g-s-k.rsch/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/g-s-k.rsch/log.txt); cc @g-s-k
 * gears-project/gears-cli: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/gears-project.gears-cli/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/gears-project.gears-cli/log.txt); cc @gears-project
 * gefjon/conlang: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/gefjon.conlang/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/gefjon.conlang/log.txt); cc @gefjon
 * hjiayz/upgradedb4pg: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/hjiayz.upgradedb4pg/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/hjiayz.upgradedb4pg/log.txt); cc @hjiayz
 * jD91mZM2/generic-turing-machine: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/jD91mZM2.generic-turing-machine/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/jD91mZM2.generic-turing-machine/log.txt); cc @jD91mZM2
 * jeehoonkang/sparc: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/jeehoonkang.sparc/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/jeehoonkang.sparc/log.txt); cc @jeehoonkang
 * jonkgrimes/lox: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/jonkgrimes.lox/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/jonkgrimes.lox/log.txt); cc @jonkgrimes
 * jrop/rust-calc: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/jrop.rust-calc/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/jrop.rust-calc/log.txt); cc @jrop
 * juancgalan/rust-lisp: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/juancgalan.rust-lisp/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/juancgalan.rust-lisp/log.txt); cc @juancgalan
 * kRITZCREEK/siml: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/kRITZCREEK.siml/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/kRITZCREEK.siml/log.txt); cc @kRITZCREEK
 * kapstok/Ambassade: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/kapstok.Ambassade/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/kapstok.Ambassade/log.txt); cc @kapstok
 * kyren/luster: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/kyren.luster/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/kyren.luster/log.txt); cc @kyren
 * liushiqi/rust-mcmod: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/liushiqi.rust-mcmod/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/liushiqi.rust-mcmod/log.txt); cc @liushiqi
 * macdavid313/calc-rs: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/macdavid313.calc-rs/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/macdavid313.calc-rs/log.txt); cc @macdavid313
 * mendelt/rusty-cave: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/mendelt.rusty-cave/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/mendelt.rusty-cave/log.txt); cc @mendelt
 * netromdk/carapace.rs: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/netromdk.carapace.rs/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/netromdk.carapace.rs/log.txt); cc @netromdk
 * onlyhavecans/gurps: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/onlyhavecans.gurps/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/onlyhavecans.gurps/log.txt); cc @onlyhavecans
 * parth-shel/pshell: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/parth-shel.pshell/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/parth-shel.pshell/log.txt); cc @parth-shel
 * phamlequang/turtle: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/phamlequang.turtle/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/phamlequang.turtle/log.txt); cc @phamlequang
 * pikobyte/kratzer: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/pikobyte.kratzer/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/pikobyte.kratzer/log.txt); cc @pikobyte
 * psinghal20/rush: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/psinghal20.rush/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/psinghal20.rush/log.txt); cc @psinghal20
 * shibafu528/yuzuki: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/shibafu528.yuzuki/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/shibafu528.yuzuki/log.txt); cc @shibafu528
 * sindreij/rust-gb-emu: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/sindreij.rust-gb-emu/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/sindreij.rust-gb-emu/log.txt); cc @sindreij
 * tatref/synacor-challenge: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/tatref.synacor-challenge/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/tatref.synacor-challenge/log.txt); cc @tatref
 * thinkyfish/stapl: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/thinkyfish.stapl/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/thinkyfish.stapl/log.txt); cc @thinkyfish
 * tyler-cromwell/Rush: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/tyler-cromwell.Rush/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/tyler-cromwell.Rush/log.txt); cc @tyler-cromwell
 * wduquette/bonaventure: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/wduquette.bonaventure/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/wduquette.bonaventure/log.txt); cc @wduquette
 * yenwel/db: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/yenwel.db/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/yenwel.db/log.txt); cc @yenwel
 * yorodm/shsh: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/yorodm.shsh/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/yorodm.shsh/log.txt); cc @yorodm
 * zesterer/atto: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/zesterer.atto/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/zesterer.atto/log.txt); cc @zesterer
 * zummenix/xcopen: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/zummenix.xcopen/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/zummenix.xcopen/log.txt); cc @zummenix

root: ucg - 2 detected crates which regressed due to this; cc @zaphar

 * ucg-0.5.8: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/ucg-0.5.8/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/ucg-0.5.8/log.txt); cc @zaphar
 * zaphar/ucg: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/zaphar.ucg/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/zaphar.ucg/log.txt); cc @zaphar

root: wee-rl - 1 detected crates which regressed due to this; cc @jblondin

 * piske-0.1.0: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/piske-0.1.0/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/piske-0.1.0/log.txt); cc @jblondin

root: tcalc-rustyline - 1 detected crates which regressed due to this; cc @dubrowgn

 * tcalc-1.6.13: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/tcalc-1.6.13/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/tcalc-1.6.13/log.txt); cc @dubrowgn

root: amethyst_assets - 6 detected crates which regressed due to this; cc @Xaeroxe, @torkleyy, @Rhuagh, @Jojolepro, @Moxinilian

 * amethyst_animation-0.5.0: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/amethyst_animation-0.5.0/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/amethyst_animation-0.5.0/log.txt); cc @Xaeroxe, @Rhuagh, @jojolepro, @Moxinilian
 * amethyst_controls-0.4.0: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/amethyst_controls-0.4.0/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/amethyst_controls-0.4.0/log.txt); cc @Xaeroxe, @jojolepro, @Moxinilian
 * amethyst_gltf-0.5.0: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/amethyst_gltf-0.5.0/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/amethyst_gltf-0.5.0/log.txt); cc @Xaeroxe, @Rhuagh, @jojolepro, @Moxinilian
 * amethyst_input-0.6.0: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/amethyst_input-0.6.0/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/amethyst_input-0.6.0/log.txt); cc @Xaeroxe, @Rhuagh, @jojolepro, @Moxinilian
 * amethyst_locale-0.4.0: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/amethyst_locale-0.4.0/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/amethyst_locale-0.4.0/log.txt); cc @jojolepro
 * amethyst_utils-0.5.0: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/amethyst_utils-0.5.0/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/amethyst_utils-0.5.0/log.txt); cc @Xaeroxe, @Rhuagh, @jojolepro, @Moxinilian

root: fbxcel - 1 detected crates which regressed due to this; cc @lo48576

 * IcanDivideBy0/fbx-parser-bug: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/IcanDivideBy0.fbx-parser-bug/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/IcanDivideBy0.fbx-parser-bug/log.txt); cc @IcanDivideBy0

root: fui - 1 detected crates which regressed due to this; cc @xliiv

 * xliiv/ff: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/xliiv.ff/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/xliiv.ff/log.txt); cc @xliiv

root: lettre_email - 13 detected crates which regressed due to this; cc @amousset

 * CL4PTP/phil_checker: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/CL4PTP.phil_checker/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/CL4PTP.phil_checker/log.txt); cc @CL4PTP
 * Dooskington/Mail-Journal: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/Dooskington.Mail-Journal/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/Dooskington.Mail-Journal/log.txt); cc @Dooskington
 * Ophirr33/commencement-ticket-resell: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/Ophirr33.commencement-ticket-resell/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/Ophirr33.commencement-ticket-resell/log.txt); cc @Ophirr33
 * SEQUOIIA/ssh-notify: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/SEQUOIIA.ssh-notify/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/SEQUOIIA.ssh-notify/log.txt); cc @SEQUOIIA
 * ahamez/scrape_hwg_ste: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/ahamez.scrape_hwg_ste/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/ahamez.scrape_hwg_ste/log.txt); cc @ahamez
 * busarovalex/accounting: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/busarovalex.accounting/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/busarovalex.accounting/log.txt); cc @busarovalex
 * ffimnsr/simple-webservice-rust: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/ffimnsr.simple-webservice-rust/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/ffimnsr.simple-webservice-rust/log.txt); cc @ffimnsr
 * koshkin-kna/maxim_ip_learn: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/koshkin-kna.maxim_ip_learn/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/koshkin-kna.maxim_ip_learn/log.txt); cc @koshkin-kna
 * nurelin/rust2email: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/nurelin.rust2email/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/nurelin.rust2email/log.txt); cc @nurelin
 * patternseek/resticmgr: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/patternseek.resticmgr/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/patternseek.resticmgr/log.txt); cc @patternseek
 * renato-zannon/lotr-watcher: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/renato-zannon.lotr-watcher/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/renato-zannon.lotr-watcher/log.txt); cc @renato-zannon
 * sunny4381/twitnot: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/sunny4381.twitnot/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/sunny4381.twitnot/log.txt); cc @sunny4381
 * whl36512/email_client: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/whl36512.email_client/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/whl36512.email_client/log.txt); cc @whl36512

root: liquid - 8 detected crates which regressed due to this; cc @johannhof

 * cargo-tarball-0.0.1: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/cargo-tarball-0.0.1/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/cargo-tarball-0.0.1/log.txt); cc @epage
 * gust-0.1.4: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/gust-0.1.4/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/gust-0.1.4/log.txt); cc @saresend
 * stager-0.3.4: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/reg/stager-0.3.4/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/reg/stager-0.3.4/log.txt); cc @epage
 * PurpleMyst/repoman: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/PurpleMyst.repoman/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/PurpleMyst.repoman/log.txt); cc @PurpleMyst
 * crate-ci/cargo-tarball: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/crate-ci.cargo-tarball/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/crate-ci.cargo-tarball/log.txt); cc @crate-ci
 * dzamlo/multitest: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/dzamlo.multitest/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/dzamlo.multitest/log.txt); cc @dzamlo
 * phideg/neptungen: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/phideg.neptungen/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/phideg.neptungen/log.txt); cc @phideg
 * sunilbandla/draw-charts: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/sunilbandla.draw-charts/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/sunilbandla.draw-charts/log.txt); cc @sunilbandla

root: redis-async - 5 detected crates which regressed due to this; cc @benashford

 * Idein/actix-rate-limit: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/Idein.actix-rate-limit/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/Idein.actix-rate-limit/log.txt); cc @Idein
 * approveapi/actix-web-magic-link-auth: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/approveapi.actix-web-magic-link-auth/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/approveapi.actix-web-magic-link-auth/log.txt); cc @approveapi
 * sadkovoy/protego: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/sadkovoy.protego/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/sadkovoy.protego/log.txt); cc @sadkovoy
 * semyon2105/authsrv: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/semyon2105.authsrv/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/semyon2105.authsrv/log.txt); cc @semyon2105
 * yinyanlv/partner: [start](https://crater-reports.s3.amazonaws.com/beta-1.36-2/1.35.0/gh/yinyanlv.partner/log.txt) v. [end](https://crater-reports.s3.amazonaws.com/beta-1.36-2/beta-2019-05-30/gh/yinyanlv.partner/log.txt); cc @yinyanlv

@benashford
Copy link
Contributor

Regarding redis-async this was fixed in version 0.4.5 a couple of weeks ago. Those five crates that failed to build have versions 0.4.3 or 0.4.4 in their Cargo.lock file, but a cargo update should fix them without any other intervention required.

@gwenn
Copy link

gwenn commented Jun 3, 2019

Regarding rustyline, this was fixed in version 4.1.0.

@alexcrichton
Copy link
Member

cc @rust-lang/libs, this was reopened due to the impact found on crater (see above). We'll discuss this in the next triage meeting but figured y'all would want to be aware ahead of time.

@lo48576
Copy link
Contributor

lo48576 commented Jun 4, 2019

fbxcel has 0.4.x release (which compiles with nightly) and the regressed version is 0.2.0.
Should I release 0.2.1 with a fix?

@Mark-Simulacrum
Copy link
Member

It's up to you, of course, but if you don't then it's likely that downstream crates which still depend on the 0.2.x series will stop compiling in 1.36+.

@Mark-Simulacrum Mark-Simulacrum changed the title String::as_ref() Into<String> doesn't compile on nightly String::as_ref() Into<String> type inference regression Jun 4, 2019
@Mark-Simulacrum
Copy link
Member

FWIW in the build/test crater run which seems to hit more crates I'm seeing numerous regressions beyond even those listed above (if it'd be helpful, I can spend some time preparing a full list, pinging the relevant folks, etc.). However, I'm thinking that we should revert the change that caused this -- the impl doesn't seem sufficiently useful (essentially saving a .clone()).

@AnneKitsune
Copy link

Fixed in amethyst by amethyst/amethyst#1619
The next release is scheduled to be out soon.

@lo48576
Copy link
Contributor

lo48576 commented Jun 6, 2019

Fixed in fbxcel 0.2.1.

@alexcrichton
Copy link
Member

We discussed this at libs triage again yesterday but reached the same conclusion as before. If anyone has difficulties in migrating though please let us know and we can try to help out!

@WiSaGaN
Copy link
Contributor

WiSaGaN commented Jul 3, 2019

I suspect this will catch a lot of users by surprise when stable is released. The as_ref/into pattern seems to be widely used according to the crater run and our internal crate breakage report.

@kylone
Copy link

kylone commented Jul 11, 2019

There have been several questions about why stringVariable.asRef() no longer compiles, particularly with developers using older pinned versions of libraries.

It certainly looks like there was an awareness that this change was going to cause some pain, but there was no mention of the type of errors in the 1.36 announcement or release notes that I saw. I also spent some time looking for documentation on what is considered acceptable breakage, and couldn't find it. (I was surprised it wasn't easy to find on the website.)

Is it worth-while to communicate (more) about acceptable breakage?

My thought is that when an issue this arises, at least acknowledge that 'acceptable breakage' was found during the beta automated testing, and provide at least a link to the GitHub issue in the release notes (and if more explanation is needed, perhaps a blog article).

@smarnach
Copy link
Contributor

The stability commitments are explained in this blog post, which I linked in an earlier comment in this thread. I agree that this information deserves a more prominent location.

@Mark-Simulacrum
Copy link
Member

Specifically AsRef will be hopefully better documented soon (#62586); we've mostly hesitated from doing so in the past because there's technically a ton of possible breakage that users might encounter that is similar to this -- any impl, method added may cause conflicts downstream. I do agree that some way of saying "here's how to fix that" would be great, or at least pointing users at what we already found. But we have no great place to do that today -- the releases.md file isn't a great place. Maybe we can start a page on forge.rust-lang.org or something along those lines.

@ehsanul
Copy link
Contributor

ehsanul commented Jul 11, 2019

While I understand this type of breakage is acceptable and falls within stability guarantees, would it have made sense to first add a warning/deprecation notice for one or two releases prior to the actual change? Assuming that is doable without a large effort of course.

@sfackler
Copy link
Member

There's no infrastructure to do that currently AFAIK.

svenfoo added a commit to svenfoo/wasm-game-of-life that referenced this issue Sep 11, 2019
The Travis CI builds keep pulling in liquid 0.15 even with this extra
dependency. Unfortunately that version triggers an accepted regression
in Rust, see rust-lang/rust#60958
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
regression-from-stable-to-beta Performance or correctness regression from stable to beta. T-libs-api Relevant to the library API team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests