Почему usize :: max_value () возвращает максимальное значение беззнакового 32-битного целого числа в 64-битном Windows? - PullRequest
2 голосов
/ 04 марта 2020

Документация Примечания:

assert_eq!(usize::max_value(), 18446744073709551615);

Но когда я запускаю простой тест:

use std::usize;

fn main() {
    println!("{}", usize::max_value());
}

Он печатает: 4294967295

Мой проект только инициализирован и содержит 2 строки use std::usize; и println!("{}", usize::max_value());, ничего больше не изменилось.

Мой вывод rustc --version --verbose:

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

После удаления Rust и переустановки с помощью 64-битного Windows installer rustup я получаю:

Current installation options:
  default host triple: x86_64-pc-windows-msvc
  default toolchain: stable
  profile: default
  modify PATH variable: yes

Но когда я запускаю rustup toolchain list, он печатает один элемент:

stable-i686-pc-windows-msvc (default)

Что здесь происходит?

1 Ответ

5 голосов
/ 04 марта 2020

Как сказано в документации для usize:

Размер этого примитива - это количество байтов, необходимое для ссылки на любое место в памяти. Например, для 32-битной цели это 4 байта , а для 64-битной цели это 8 байтов.

4294967295 - это максимальный размер 32 -битное целое число; что означает, что вы компилируете для 32-битной платформы.

Это подтверждается вашим выводом rustc:

host: i686-pc-windows-msvc

Вы установили 32-битный Windows компилятор. 64-битный компилятор говорит: x86_64-pc-windows-*.

Вы можете изменить хост восстановления по умолчанию на 64-битный:

rustup set default-host x86_64-pc-windows-msvc

Затем вам, вероятно, потребуется удалить и переустановить стабильный набор инструментов, чтобы переключите его на 64-битный.

См. также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...