See [RFC 401](https://github.com/rust-lang/rfcs/blob/master/text/0401-coercions.md). In particular: the [Function type polymorphism](https://github.com/rust-lang/rfcs/blob/master/text/0401-coercions.md#function-type-polymorphism) section. Part of #18469