Is there a technical reason to now allow closures as the integrand?
Mayve because they aren't guaranteed to be actual functions (in the mathematical sense) and could return random values
The Fn trait could be used, which prevents mutation, but allows a lot of useful closures. I should note, a motivated user could provide a junk function no matter what the type accepted is