title: What's the default floating point type?
body: <p>If the floating point type is specified on variable <code>a</code>, the <code>abs</code> function can be used. The following example is running:</p>
  
  <pre><code>fn main() {
      let a = -1.0f64;
      println!("{:?}", a.abs());
  }
  </code></pre>
  
  <p>It prints <code>1</code> as expected. But if the <code>f64</code> is omitted an error is thrown during compilation as in following example:</p>
  
  <pre><code>fn main() {
      let a = -1.0;
      println!("{:?}", a.abs());
  }
  </code></pre>
  
  <p>This version gives following failure:</p>
  
  <pre><code>   Compiling playground v0.1.0 (file:///C:/git/Rust/playground)
  src\main.rs:3:24: 3:29 error: no method named `abs` found for type `_` in the current scope
  src\main.rs:3     println!("{:?}", a.abs());
                                       ^~~~~
  note: in expansion of format_args!
  &lt;std macros&gt;:2:25: 2:56 note: expansion site
  &lt;std macros&gt;:1:1: 2:62 note: in expansion of print!
  &lt;std macros&gt;:3:1: 3:54 note: expansion site
  &lt;std macros&gt;:1:1: 3:58 note: in expansion of println!
  src\main.rs:3:5: 3:31 note: expansion site
  src\main.rs:3:24: 3:29 help: items from traits can only be used if the trait is in scope; the following trait is implemented but not in scope, perhaps add a `use` for it:
  src\main.rs:3:24: 3:29 help: candidate #1: use `core::num::Float`
  error: aborting due to previous error
  Could not compile `playground`.
  
  To learn more, run the command again with --verbose.
  </code></pre>
  
  <p>This message says the type of <code>a</code> is <code>_</code>. I guess the <code>abs</code> function cannot be used, because it is not clear, what the specific type of <code>a</code> is. Does it mean that the type is not defined at compile time? What is the type used, if no specific float type is declared in Rust?</p>