rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
98.16k stars 12.69k forks source link

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

Closed oherrala closed 5 years ago

oherrala commented 5 years ago

The following code has been working with stable compiler (rustc 1.34.2), but doesn't compile with nightly (rustc 1.36.0-nightly (963184bbb 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 commented 5 years ago

Likely caused by https://github.com/rust-lang/rust/pull/59825, but considered acceptable breakage.

smarnach commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

Specifically, since this is essentially inference breakage it is permitted per our policies. If there is some reason this causes significant difficulty for you, though, we'd like to hear about that and may reconsider.

smarnach commented 5 years ago

@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.

bmwill commented 5 years ago

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 :)

alexcrichton commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

Regarding rustyline, this was fixed in version 4.1.0.

alexcrichton commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

Fixed in amethyst by https://github.com/amethyst/amethyst/pull/1619 The next release is scheduled to be out soon.

lo48576 commented 5 years ago

Fixed in fbxcel 0.2.1.

alexcrichton commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

There's no infrastructure to do that currently AFAIK.