-
-
Notifications
You must be signed in to change notification settings - Fork 14.3k
Open
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsC-bugCategory: This is a bug.Category: This is a bug.D-invalid-suggestionDiagnostics: A structured suggestion resulting in incorrect code.Diagnostics: A structured suggestion resulting in incorrect code.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.This issue may need triage. Remove it if it has been sufficiently triaged.
Description
I tried this code:
fn main() {
"".starts_with(|ch| char::is_ascii(ch));
}I expected to see this happen: explanation
error[E0631]: type mismatch in closure arguments
--> src/bin/main.rs:2:8
|
2 | "".starts_with(|ch| char::is_ascii(ch));
| ^^^^^^^^^^^ ---- found signature defined here
| |
| expected due to this
|
= note: expected closure signature `fn(_) -> _`
found closure signature `fn(&_) -> _`
= note: required for `{closure@src/bin/main.rs:2:20: 2:24}` to implement `Pattern`
note: required by a bound in `core::str::<impl str>::starts_with`
--> /home/lrne/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/str/mod.rs:1378:27
|
1378 | pub fn starts_with<P: Pattern>(&self, pat: P) -> bool {
| ^^^^^^^ required by this bound in `core::str::<impl str>::starts_with`
help: consider adjusting the signature so it does not borrow its argument
|
2 | "".starts_with(|ch: char| char::is_ascii(ch));
| ++++++
For more information about this error, try `rustc --explain E0631`.
error: could not compile `quick-rs` (bin "main") due to 1 previous error
Instead, this happened: (unexpected change on closure arguments)
error[E0631]: type mismatch in closure arguments
--> src/bin/main.rs:2:8
|
2 | "".starts_with(|ch| char::is_ascii(ch));
| ^^^^^^^^^^^ ---- found signature defined here
| |
| expected due to this
|
= note: expected closure signature `fn(_) -> _`
found closure signature `fn(&_) -> _`
= note: required for `{closure@src/bin/main.rs:2:20: 2:24}` to implement `Pattern`
note: required by a bound in `core::str::<impl str>::starts_with`
--> /home/lrne/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/str/mod.rs:1378:27
|
1378 | pub fn starts_with<P: Pattern>(&self, pat: P) -> bool {
| ^^^^^^^ required by this bound in `core::str::<impl str>::starts_with`
help: consider adjusting the signature so it does not borrow its argument
|
2 | "".starts_with(|char| char::is_ascii(ch));
| ++
For more information about this error, try `rustc --explain E0631`.
error: could not compile `quick-rs` (bin "main") due to 1 previous error
Meta
rustc --version --verbose:
rustc 1.93.0-nightly (f15a7f385 2025-11-04)
binary: rustc
commit-hash: f15a7f38580ddbdc1a23909dd05cf6cc6d9f3919
commit-date: 2025-11-04
host: x86_64-unknown-linux-gnu
release: 1.93.0-nightly
LLVM version: 21.1.3
@rustbot label +A-diagnostics
reddevilmidzy
Metadata
Metadata
Assignees
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsC-bugCategory: This is a bug.Category: This is a bug.D-invalid-suggestionDiagnostics: A structured suggestion resulting in incorrect code.Diagnostics: A structured suggestion resulting in incorrect code.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.This issue may need triage. Remove it if it has been sufficiently triaged.