pub trait Monoid: Add + Default { }
A Monoid consists of a semigroup (the Add trait in Rust) and an empty value (the Default trait) plus the following laws:
Monoid
Add
Default
(x + y) + z == x + (y + z)
0 + a == a + 0 == a
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.