"Bypassing" specialization in Rust or How I Learned to Stop Worrying and Love Function Pointers