// Copyright 2022 The Vello authors // SPDX-License-Identifier: Apache-2.0 OR MIT /// Interface for a monoid. The default value must be the identity of /// the monoid. pub trait Monoid: Default { /// The source value for constructing the monoid. type SourceValue; /// Creates a monoid from a given value. fn new(value: Self::SourceValue) -> Self; /// Combines two monoids. This operation must be associative. fn combine(&self, other: &Self) -> Self; }