this leaves me to question the Rust ecosystem's approach of making everything generic by default; monomorphization is expensive though the runtime is very very fast, but maybe the value in monomorphization isn't universal and we should be using trait objects more than we do?
maybe it's because trait objects are constructed very differently from C++ vtables that we tend to shy away from them. but maybe trait objects really could help us solve a broad class of issues without diverting to more academic data-oriented design solutions and without losing out on that much performance