title: Why does usize::max_value() return the maximum value of an unsigned 32 bit integer on 64 bit Windows?
body: <p>The <a href="https://doc.rust-lang.org/std/primitive.usize.html#method.max_value" rel="nofollow noreferrer">documentation</a> notes: </p>
  
  <blockquote>
  <pre><code>assert_eq!(usize::max_value(), 18446744073709551615);
  </code></pre>
  </blockquote>
  
  <p>But when I run a simple test:</p>
  
  <pre><code>use std::usize;
  
  fn main() {
      println!("{}", usize::max_value());
  }
  </code></pre>
  
  <p>It prints: <code>4294967295</code></p>
  
  <p>My project has only been initialised and had the 2 lines <code>use std::usize;</code> and <code>println!("{}", usize::max_value());</code> added, nothing else has been changed.</p>
  
  <p>My output of <code>rustc --version --verbose</code>:</p>
  
  <pre class="lang-none prettyprint-override"><code>rustc 1.41.1 (f3e1a954d 2020-02-24)
  binary: rustc
  commit-hash: f3e1a954d2ead4e2fc197c7da7d71e6c61bad196
  commit-date: 2020-02-24
  host: i686-pc-windows-msvc
  release: 1.41.1
  LLVM version: 9.0
  </code></pre>
  
  <p>After deleting Rust and reinstalling using the 64-bit Windows rustup installer, I get:</p>
  
  <pre class="lang-none prettyprint-override"><code>Current installation options:
    default host triple: x86_64-pc-windows-msvc
    default toolchain: stable
    profile: default
    modify PATH variable: yes
  </code></pre>
  
  <p>But when I run <code>rustup toolchain list</code> it prints a single item:</p>
  
  <pre class="lang-none prettyprint-override"><code>stable-i686-pc-windows-msvc (default)
  </code></pre>
  
  <p>What is happening here?</p>