Skip to content

Commit

Permalink
Add note suggesting to borrow a String argument to find
Browse files Browse the repository at this point in the history
  • Loading branch information
estebank committed Jul 25, 2019
1 parent 03f19f7 commit 3ab6026
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/libcore/ops/function.rs
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,10 @@ pub trait Fn<Args> : FnMut<Args> {
#[rustc_paren_sugar]
#[rustc_on_unimplemented(
on(Args="()", note="wrap the `{Self}` in a closure with no arguments: `|| {{ /* code */ }}"),
on(
all(Args="(char,)", _Self="std::string::String"),
note="borrowing the `{Self}` might fix the problem"
),
message="expected a `{FnMut}<{Args}>` closure, found `{Self}`",
label="expected an `FnMut<{Args}>` closure, found `{Self}`",
)]
Expand Down
5 changes: 5 additions & 0 deletions src/test/ui/suggestions/issue-62843.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
fn main() {
let line = String::from("abc");
let pattern = String::from("bc");
println!("{:?}", line.find(pattern)); //~ ERROR E0277
}
13 changes: 13 additions & 0 deletions src/test/ui/suggestions/issue-62843.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
error[E0277]: expected a `std::ops::FnMut<(char,)>` closure, found `std::string::String`
--> $DIR/issue-62843.rs:4:27
|
LL | println!("{:?}", line.find(pattern));
| ^^^^ expected an `FnMut<(char,)>` closure, found `std::string::String`
|
= help: the trait `std::ops::FnMut<(char,)>` is not implemented for `std::string::String`
= note: borrowing the `std::string::String` might fix the problem
= note: required because of the requirements on the impl of `std::str::pattern::Pattern<'_>` for `std::string::String`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0277`.

0 comments on commit 3ab6026

Please sign in to comment.