fix/feat: Change the existing Add<...> impls #130
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implementing
Add<CompactString> for String
breaksString + &String
, as long ascompact_str
is used somewhere in your current crate. Specifically this code won't compile:This isn't good! This has to do with Rust's current trait resolver and is a known issue rust-lang/rust#77143
To fix this, we remove
impl Add<CompactString> for String
. You can still addCompactString
toString
, you just need to take a reference to it, then theimpl Add<&str> for String
kicks in.We also remove a lot of
impl Add<...> for CompactString
, leaving justimpl Add<&str> for CompactString
, which allows us to add more string types than we currently can, e.g.&Box<str>
and&Cow<str>
. This is because the compiler auto derefs these types to&str
and uses that impl