Bound N on Clone, not Copy
All Copy
types are also Clone
types where the clone bound happens to be really cheap. Bounding N: Clone
instead of N: Copy
means that we can use numeric types like num::BigInteger
, which are not Copy
, and things still work. You pay a bit more runtime cost, but if you're using a non-default counter type, presumably you know the costs of your actions.