Primitive Type isize1.0.0[−]
Expand description
指针大小的有符号整数类型。
该原语的大小是引用内存中任何位置所需要的字节数。 例如,在 32 位目标上,这是 4 个字节,而在 64 位目标上,这是 8 个字节。
Implementations
🔬 This is a nightly-only experimental API. (unchecked_math #85122)
niche optimization path
🔬 This is a nightly-only experimental API. (unchecked_math #85122)
niche optimization path
未经检查的整数加法。
假设不会发生溢出,则计算 self + rhs。
Safety
当以下情况时,这导致未定义的行为
self + rhs > isize::MAX or self + rhs < isize::MIN,
即当 checked_add 将返回 None 时。
🔬 This is a nightly-only experimental API. (unchecked_math #85122)
niche optimization path
🔬 This is a nightly-only experimental API. (unchecked_math #85122)
niche optimization path
未经检查的整数减法。
假设不会发生溢出,则计算 self - rhs。
Safety
当以下情况时,这导致未定义的行为
self - rhs > isize::MAX or self - rhs < isize::MIN,
即当 checked_sub 将返回 None 时。
🔬 This is a nightly-only experimental API. (unchecked_math #85122)
niche optimization path
🔬 This is a nightly-only experimental API. (unchecked_math #85122)
niche optimization path
未经检查的整数乘法。
假设不会发生溢出,则计算 self * rhs。
Safety
当以下情况时,这导致未定义的行为
self * rhs > isize::MAX or self * rhs < isize::MIN,
即当 checked_mul 将返回 None 时。
🔬 This is a nightly-only experimental API. (unchecked_math #85122)
niche optimization path
🔬 This is a nightly-only experimental API. (unchecked_math #85122)
niche optimization path
未检查的左移。
计算 self << rhs,假设 rhs 小于 self 中的位数。
Safety
如果 rhs 大于或等于 self 中的位数,则会导致未定义的行为,即
当 checked_shl 返回 None 时。
🔬 This is a nightly-only experimental API. (unchecked_math #85122)
niche optimization path
🔬 This is a nightly-only experimental API. (unchecked_math #85122)
niche optimization path
未检查右移。
计算 self >> rhs,假设 rhs 小于 self 中的位数。
Safety
如果 rhs 大于或等于 self 中的位数,则会导致未定义的行为,即
当 checked_shr 返回 None 时。
无 Panic - 按位左移; 产生 self << mask(rhs),其中 mask 删除 rhs 的所有高位,这些高位将导致移位超过该类型的位宽。
注意,这与左旋不同; 环绕左移的 RHS 限于该类型的范围,而不是从 LHS 移出的位返回到另一端。
所有原始整数类型都实现了 rotate_left 函数,而您可能想要的是 rotate_left 函数。
Examples
基本用法:
assert_eq!((-1isize).wrapping_shl(7), -128);
assert_eq!((-1isize).wrapping_shl(128), -1);Run无 Panic - 按位右移; 产生 self >> mask(rhs),其中 mask 删除 rhs 的所有高位,这些高位将导致移位超过该类型的位宽。
注意,这与右旋转不同。换行右移的 RHS 限于类型的范围,而不是从 LHS 移出的位返回到另一端。
所有原始整数类型都实现了 rotate_right 函数,而您可能想要的是 rotate_right 函数。
Examples
基本用法:
assert_eq!((-128isize).wrapping_shr(7), -1);
assert_eq!((-128i16).wrapping_shr(64), -128);Run包装 (modular) 绝对值。计算 self.abs(),在类型的边界处回绕。
可能发生这种换行的唯一情况是,当类型取负的最小值的绝对值时; 这是一个太大的正值,无法在类型中表示。
在这种情况下,此函数将返回 MIN 本身。
Examples
基本用法:
assert_eq!(100isize.wrapping_abs(), 100);
assert_eq!((-100isize).wrapping_abs(), 100);
assert_eq!(isize::MIN.wrapping_abs(), isize::MIN);
assert_eq!((-128i8).wrapping_abs() as u8, 128);Run使用无符号 rhs 计算 self + rhs
返回一个加法元组以及一个布尔值,该布尔值指示是否会发生算术溢出。 如果将发生溢出,则返回包装的值。
Examples
基本用法:
assert_eq!(1isize.overflowing_add_unsigned(2), (3, false));
assert_eq!((isize::MIN).overflowing_add_unsigned(usize::MAX), (isize::MAX, false));
assert_eq!((isize::MAX - 2).overflowing_add_unsigned(3), (isize::MIN, true));Run使用无符号 rhs 计算 self-rhs
返回一个减法的元组以及一个布尔值,该布尔值指示是否会发生算术溢出。 如果将发生溢出,则返回包装的值。
Examples
基本用法:
assert_eq!(1isize.overflowing_sub_unsigned(2), (-1, false));
assert_eq!((isize::MAX).overflowing_sub_unsigned(usize::MAX), (isize::MIN, false));
assert_eq!((isize::MIN + 2).overflowing_sub_unsigned(3), (isize::MAX, true));Run计算 self 的绝对值。
返回 self 的绝对版本的元组以及一个布尔值,该布尔值指示是否发生了溢出。 如果 self 是最小值 (e.g., isize::MIN for values of type isize), 然后将再次返回最小值,并在发生溢出时返回 true。
Examples
基本用法:
assert_eq!(10isize.overflowing_abs(), (10, false));
assert_eq!((-10isize).overflowing_abs(), (10, false));
assert_eq!((isize::MIN).overflowing_abs(), (isize::MIN, true));Run计算 self 的欧几里得除以 rhs 的商。
这将计算整数 q,使得 self = q * rhs + r、r = self.rem_euclid(rhs) 和 0 <= r < abs(rhs)。
换句话说,结果是 self / rhs 舍入为整数 q,使得 self >= q * rhs。
如果为 self > 0,则等于舍入为零 (Rust 中的默认值) ;
如果为 self < 0,则等于朝 +/- 无限取整。
Panics
如果 rhs 为 0 或除法导致溢出,则该函数将为 panic。
Examples
基本用法:
let a: isize = 7; // or any other integer type
let b = 4;
assert_eq!(a.div_euclid(b), 1); // 7 >= 4 * 1
assert_eq!(a.div_euclid(-b), -1); // 7 >= -4 * -1
assert_eq!((-a).div_euclid(b), -2); // -7 >= 4 * -2
assert_eq!((-a).div_euclid(-b), 2); // -7 >= -4 * 2Run计算 self (mod rhs) 的最小非负余数。
就像通过欧几里得除法算法一样 - 给定 r = self.rem_euclid(rhs),self = rhs * self.div_euclid(rhs) + r 和 0 <= r < abs(rhs)。
Panics
如果 rhs 为 0 或除法导致溢出,则该函数将为 panic。
Examples
基本用法:
let a: isize = 7; // or any other integer type
let b = 4;
assert_eq!(a.rem_euclid(b), 3);
assert_eq!((-a).rem_euclid(b), 1);
assert_eq!(a.rem_euclid(-b), 3);
assert_eq!((-a).rem_euclid(-b), 1);Run计算 self 和 rhs 的商,将结果四舍五入到负无穷大。
Panics
如果 rhs 为 0 或除法导致溢出,则该函数将为 panic。
Examples
基本用法:
#![feature(int_roundings)]
let a: isize = 8;
let b = 3;
assert_eq!(a.unstable_div_floor(b), 2);
assert_eq!(a.unstable_div_floor(-b), -3);
assert_eq!((-a).unstable_div_floor(b), -3);
assert_eq!((-a).unstable_div_floor(-b), 2);Run计算 self 和 rhs 的商,将结果四舍五入到正无穷大。
Panics
如果 rhs 为 0 或除法导致溢出,则该函数将为 panic。
Examples
基本用法:
#![feature(int_roundings)]
let a: isize = 8;
let b = 3;
assert_eq!(a.unstable_div_ceil(b), 3);
assert_eq!(a.unstable_div_ceil(-b), -2);
assert_eq!((-a).unstable_div_ceil(b), -2);
assert_eq!((-a).unstable_div_ceil(-b), 3);Run如果 rhs 为正数,则计算大于或等于 self 的最小值,即 rhs 的倍数。
如果 rhs 为负数,则计算小于或等于 rhs 倍数的 self 的最大值。
Panics
如果 rhs 为 0 或操作导致溢出,则此函数将 panic。
Examples
基本用法:
#![feature(int_roundings)]
assert_eq!(16_isize.unstable_next_multiple_of(8), 16);
assert_eq!(23_isize.unstable_next_multiple_of(8), 24);
assert_eq!(16_isize.unstable_next_multiple_of(-8), 16);
assert_eq!(23_isize.unstable_next_multiple_of(-8), 16);
assert_eq!((-16_isize).unstable_next_multiple_of(8), -16);
assert_eq!((-23_isize).unstable_next_multiple_of(8), -16);
assert_eq!((-16_isize).unstable_next_multiple_of(-8), -16);
assert_eq!((-23_isize).unstable_next_multiple_of(-8), -24);Run如果 rhs 为正数,则计算大于或等于 self 的最小值,即 rhs 的倍数。
如果 rhs 为负数,则计算小于或等于 rhs 倍数的 self 的最大值。
如果 rhs 为零,则返回 None,否则操作会导致溢出。
Examples
基本用法:
#![feature(int_roundings)]
assert_eq!(16_isize.checked_next_multiple_of(8), Some(16));
assert_eq!(23_isize.checked_next_multiple_of(8), Some(24));
assert_eq!(16_isize.checked_next_multiple_of(-8), Some(16));
assert_eq!(23_isize.checked_next_multiple_of(-8), Some(16));
assert_eq!((-16_isize).checked_next_multiple_of(8), Some(-16));
assert_eq!((-23_isize).checked_next_multiple_of(8), Some(-16));
assert_eq!((-16_isize).checked_next_multiple_of(-8), Some(-16));
assert_eq!((-23_isize).checked_next_multiple_of(-8), Some(-24));
assert_eq!(1_isize.checked_next_multiple_of(0), None);
assert_eq!(isize::MAX.checked_next_multiple_of(2), None);Run计算 self 和 other 之间的绝对差。
这个函数总是通过返回一个无符号整数来返回没有溢出或 panics 的正确答案。
Examples
基本用法:
#![feature(int_abs_diff)]
assert_eq!(100isize.abs_diff(80), 20usize);
assert_eq!(100isize.abs_diff(110), 10usize);
assert_eq!((-100isize).abs_diff(80), 180usize);
assert_eq!((-100isize).abs_diff(-120), 20usize);
assert_eq!(isize::MIN.abs_diff(isize::MAX), usize::MAX);Run将此整数的内存表示作为本机字节顺序的字节数组返回。
由于使用了目标平台的原生字节序,因此,可移植代码应酌情使用 to_be_bytes 或 to_le_bytes。
Note: This function returns an array of length 2, 4 or 8 bytes depending on the target pointer size.
Examples
let bytes = 0x1234567890123456isize.to_ne_bytes();
assert_eq!(
bytes,
if cfg!(target_endian = "big") {
[0x12, 0x34, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56]
} else {
[0x56, 0x34, 0x12, 0x90, 0x78, 0x56, 0x34, 0x12]
}
);Run从其表示形式以 big endian 的字节数组形式创建一个整数值。
Note: This function returns an array of length 2, 4 or 8 bytes depending on the target pointer size.
Examples
let value = isize::from_be_bytes([0x12, 0x34, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56]);
assert_eq!(value, 0x1234567890123456);Run从切片而不是数组开始时,可以使用容易出错的转换 API:
use std::convert::TryInto;
fn read_be_isize(input: &mut &[u8]) -> isize {
let (int_bytes, rest) = input.split_at(std::mem::size_of::<isize>());
*input = rest;
isize::from_be_bytes(int_bytes.try_into().unwrap())
}Run从它的表示形式以 little endian 的字节数组形式创建一个整数值。
Note: This function returns an array of length 2, 4 or 8 bytes depending on the target pointer size.
Examples
let value = isize::from_le_bytes([0x56, 0x34, 0x12, 0x90, 0x78, 0x56, 0x34, 0x12]);
assert_eq!(value, 0x1234567890123456);Run从切片而不是数组开始时,可以使用容易出错的转换 API:
use std::convert::TryInto;
fn read_le_isize(input: &mut &[u8]) -> isize {
let (int_bytes, rest) = input.split_at(std::mem::size_of::<isize>());
*input = rest;
isize::from_le_bytes(int_bytes.try_into().unwrap())
}Run从其内存表示形式创建一个整数值,以原生字节序表示为字节数组。
由于使用了目标平台的原生字节序,因此可移植代码可能希望酌情使用 from_be_bytes 或 from_le_bytes。
Note: This function returns an array of length 2, 4 or 8 bytes depending on the target pointer size.
Examples
let value = isize::from_ne_bytes(if cfg!(target_endian = "big") {
[0x12, 0x34, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56]
} else {
[0x56, 0x34, 0x12, 0x90, 0x78, 0x56, 0x34, 0x12]
});
assert_eq!(value, 0x1234567890123456);Run从切片而不是数组开始时,可以使用容易出错的转换 API:
use std::convert::TryInto;
fn read_ne_isize(input: &mut &[u8]) -> isize {
let (int_bytes, rest) = input.split_at(std::mem::size_of::<isize>());
*input = rest;
isize::from_ne_bytes(int_bytes.try_into().unwrap())
}Run👎 Deprecating in a future Rust version: replaced by the MIN associated constant on this type
replaced by the MIN associated constant on this type
新代码应优先使用
isize::MIN instead.
返回此整数类型可以表示的最小值。
👎 Deprecating in a future Rust version: replaced by the MAX associated constant on this type
replaced by the MAX associated constant on this type
新代码应优先使用
isize::MAX instead.
返回此整数类型可以表示的最大值。
Trait Implementations
执行 += 操作。 Read more
执行 += 操作。 Read more
执行 &= 操作。 Read more
执行 &= 操作。 Read more
type Output = NonZeroIsize
type Output = NonZeroIsize
应用 | 运算符后的结果类型。
执行 | 操作。 Read more
执行 |= 操作。 Read more
执行 |= 操作。 Read more
执行 ^= 操作。 Read more
执行 ^= 操作。 Read more
此运算将舍入为零,舍去精确结果的任何小数部分。
Panics
This operation will panic if other == 0 or the division results in overflow.
执行 /= 操作。 Read more
执行 /= 操作。 Read more
Converts a NonZeroIsize into an isize
type Err = ParseIntError
type Err = ParseIntError
可以从解析中返回的相关错误。
执行 *= 操作。 Read more
执行 *= 操作。 Read more
如果存在,则此方法返回 self 和 other 值之间的顺序。 Read more
此操作满足 n % d == n - (n / d) * d。
结果具有与左操作数相同的符号。
Panics
This operation will panic if other == 0 or if self / other results in overflow.
执行 %= 操作。 Read more
执行 %= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 <<= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
执行 >>= 操作。 Read more
🔬 This is a nightly-only experimental API. (step_trait #42168)
recently redesigned
返回通过将 self count 的 successor 而获得的值。 Read more
🔬 This is a nightly-only experimental API. (step_trait #42168)
recently redesigned
返回通过获取 self count 次的 predecessor 而获得的值。 Read more
🔬 This is a nightly-only experimental API. (step_trait #42168)
recently redesigned
返回通过将 self count 的 successor 而获得的值。 Read more
🔬 This is a nightly-only experimental API. (step_trait #42168)
recently redesigned
返回通过获取 self count 次的 predecessor 而获得的值。 Read more
🔬 This is a nightly-only experimental API. (step_trait #42168)
recently redesigned
返回从 start 到 end 所需的 successor 步骤的数量。 Read more
执行 -= 操作。 Read more
执行 -= 操作。 Read more