MutatatingUseContext
SetDiscriminant
itertools
Please read the rustc-dev-guide chapter on Backend Agnostic Codegen.