1use crate::empty::Empty; 2use crate::semigroup::Semigroup; 3use std::ops::Add; 4 5pub trait Monoid: Empty + Semigroup {} 6 7impl Monoid for i32 {} 8impl Monoid for i64 {} 9impl<T: Clone> Monoid for Vec<T> {} 10impl Monoid for String {}