usecrate::semigroupoid::Semigroupoid;/// Category: a Semigroupoid with an identity morphism.
////// Laws:
/// - Left identity: compose(id(), f) == f
/// - Right identity: compose(f, id()) == f
pubtraitCategory: Semigroupoid {fnid<A:Clone+'static>()->Self::P<A, A>;}