This code fails to compile on nightly 2018-05-20 ([playground](https://play.rust-lang.org/?gist=f150a7d94f6d933d302d30844d30971a&version=nightly&mode=debug)): ``` use std::borrow::{Borrow, Cow}; fn takes_into_cow<'a, T: Into<Cow<'a, str>>>(x: T) { let s = x.into(); println!("{}", s); } fn forward_cow<'a>(x: Cow<'a, str>) { takes_into_cow(x.borrow()) } fn main() { forward_cow("test".into()); } ``` With this error: ``` error[E0283]: type annotations required: cannot resolve `std::borrow::Cow<'_, str>: std::borrow::Borrow<_>` --> src/main.rs:9:22 | 9 | takes_into_cow(x.borrow()) | ^^^^^^ ``` This compiles fine on stable and beta, and probably on nightly as well until some time in the last week or so. This is a simplified version of the code involved in SergioBenitez/Rocket#643.