Rust 中的 isize 和 usize 可以不同吗?

Dam*_*ian 2 rust

可以isize和USIZE有所不同呢?它们都可以用于内存大小、索引、偏移量。

既然usize用于数组,为什么我们不只有 usize

我是 Rust 的新手,所以这可能是一个基本问题。

更新:在 32 位系统上,它们都是 32 位长,在 64 位系统上它们都是 64 位长。与标志无关。

Pet*_*all 8

在32位的系统中,isize是相同的i32并且usize是相同的u32。在64位的系统中,isize是相同的i64并且usize是相同的u64

  • usize 不能为负数,通常用于内存地址、位置、索引、长度(或大小!)。
  • isize 可以是负数,通常用于地址、位置、索引或长度的偏移


yel*_*owB 5

isize是基于体系结构的(例如 32 位/64 位)有符号(负/0/正)整数类型。

这里

原始类型大小

指针大小的有符号整数类型。

另见 std::isize 模块。

此原语的大小是引用内存中的任何位置所需的字节数。例如,在 32 位目标上,这是 4 个字节,在 64 位目标上,这是 8 个字节。

usize是基于架构的(例如 32 位/64 位)无符号(0/正)整数类型。

这里

原始类型使用

指针大小的无符号整数类型。

另见 std::usize 模块。

此原语的大小是引用内存中的任何位置所需的字节数。例如,在 32 位目标上,这是 4 个字节,在 64 位目标上,这是 8 个字节。