Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign upErgonomics: &String does not implement PartialEq<str> #44695
Comments
This comment has been minimized.
This comment has been minimized.
|
FYI this also works. *string_ref == partial[..3]I think #44619 (auto-ref with operators) will fix this. But even without #44619, the error message could take some idea for the suggestion, rather than telling the user about something they are not able to do anyway (you can't |
aidanhs
added
C-enhancement
C-feature-request
and removed
C-enhancement
labels
Sep 19, 2017
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
djc commentedSep 19, 2017
•
edited
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: Stringto&str, so I find it hard to come up with a reason it cannot do so in this case.