How does Bevy engine manage to be so “loose” with function signatures? : rust