Ergonomics: &String does not implement PartialEq<str> #44695
Labels
A-diagnostics
Area: Messages for errors, warnings, and lints
A-trait-system
Area: Trait system
C-bug
Category: This is a bug.
D-confusing
Diagnostics: Confusing error or lint that should be reworked.
D-newcomer-roadblock
Diagnostics: Confusing error or lint; hard to understand for new users.
T-compiler
Relevant to the compiler team, which will review and decide on the PR/issue.
T-lang
Relevant to the language team, which will review and decide on the PR/issue.
Start with this:
It doesn't compile: "the trait bound
&String: PartialEq<str>
is not satisfied".Let's Google this, first hit is StackOverflow, first/accepted answer talks about
.as_ref()
, try that.string_ref.as_ref() == &partial[..3]
results in "the trait bound&_: PartialEq<str>
is not satisfied" [oh, how I hate these underscores in errors].At this point I try adding
*
to the LHS or&
to the RHS. The latter results in "type annotations required: cannot resolveString: AsRef<_>
" [huh?].Here's actually everything I tried (from my actual code instead of simple example):
At this point I'm pretty much out of ideas other than brute-forcing with some
to_string()
. I don't really consider myself a beginner at this point, having successfully written a few thousand lines of code over the past 15 months, so here's where I have some empathy for those saying Rust's learning curve is just too steep.I went and read some more on SO and found this, which actually seems to work
(meta_subj as &str) == &db_subj[..998]
. The reason I would not have come up with this is that generally the compiler seems to be able to coerce&T where T: String
to&str
, so I find it hard to come up with a reason it cannot do so in this case.The text was updated successfully, but these errors were encountered: