## NOTES ## Invariants There are some invariants I want to maintain here, that I can't always get the compiler to help me enforce. I mention these here: * Parameters and return values with types from dependencies * TLDR: Don't expose types from dependencies except in very special circumstances * Cargo will very easily allow you to mix multiple versions of a dependency if a transitive dependency requires a different version. This means that if you have a function that accepts or returns a type from a third party crate, the values may not actually be compatible * Performance and number of sprite batches * It's just assumed that if you have too many sprite batches things will run slow.