lloydmeta / frunk

Funktional generic type-level programming in Rust: HList, Coproduct, Generic, LabelledGeneric, Validated, Monoid and friends.
https://beachape.com/frunk/
MIT License
1.24k stars 56 forks source link

Possible Semigroup improvements #235

Open misos1 opened 3 months ago

misos1 commented 3 months ago

Maybe there could be added a derive macro for Semigroup trait which would do combine per field like is done with tuples. (Also why not add it also for same-sized arrays?)

I noticed that Min and Max implement Semigroup for any type that has Ord but on the other hand all others like All, Any and Product are implemented only for numeric types. Why not implement Semigroup for Product for any type which can be Multiplied with itself (and similarly for All and Any)? And maybe Semigroup could be implemented as an addition for any type which has Add or maybe better add some Sum wrapper type which would do that.