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.
Adds support for implementing semigroup for types that can
plus_equals
from another type, for example vectors and slices.
Fixes a bug where the semigroup implementation for
Vec
would addoverhanging elements twice, i.e.,
[1,2] + [1,1,1]
would result in[2,3,2
] instead of[2,3,1]
.This leaves one quirk where
is_zero
does not depend onRhs
, so Rustcannot figure out which implementation to use when two are in scope,
forcing the caller to phrase it as
<R as Semigroup>::is_zero(&value)
.This only applies if
R
implementsSemigroup + Semigroup<Other>
.