title: How to use the Fn traits (closures) in Rust function signatures?
body: <p>I want to write an <code>i32</code>-returning function that accepts a closure taking zero arguments, a closure taking one argument, and a closure taking two arguments, where all closure arguments are of type <code>i32</code> and every closure returns <code>f32</code>.</p>
  
  <p>What is that function's signature going to look like?</p>
  
  <p>I want to accept these via the <code>Fn</code> and <code>FnMut</code> traits. What does the signature look like? Is the use of features in the crate required? If so, which ones and why?</p>
  
  <p>If known: what does it look like sugared? Desugared?</p>
  
  <p>If known: what is likely to be changed in the future?</p>