Primitive Type i321.0.0[]

Expand description

32 位带符号整数类型。

Implementations

此整数类型可以表示的最小值。

Examples

基本用法:

assert_eq!(i32::MIN, -2147483648);
Run

此整数类型可以表示的最大值。

Examples

基本用法:

assert_eq!(i32::MAX, 2147483647);
Run

此整数类型的大小 (以位为单位)。

Examples

assert_eq!(i32::BITS, 32);
Run

将给定基数的字符串切片转换为整数。

该字符串应为可选的 +- 符号,后跟数字。 前导和尾随空格表示错误。 根据 radix,数字是这些字符的子集:

  • 0-9
  • a-z
  • A-Z

Panics

如果 radix 不在 2 到 36 之间,则此函数 panics。

Examples

基本用法:

assert_eq!(i32::from_str_radix("A", 16), Ok(10));
Run

返回 self 二进制表示形式中的位数。

Examples

基本用法:

let n = 0b100_0000i32;

assert_eq!(n.count_ones(), 1);
Run

返回 self 二进制表示形式中的零数。

Examples

基本用法:

assert_eq!(i32::MAX.count_zeros(), 1);
Run

返回 self 二进制表示形式中前导零的数目。

Examples

基本用法:

let n = -1i32;

assert_eq!(n.leading_zeros(), 0);
Run

返回 self 二进制表示形式中的尾随零数。

Examples

基本用法:

let n = -4i32;

assert_eq!(n.trailing_zeros(), 2);
Run

返回 self 二进制表示形式中前导数字。

Examples

基本用法:

let n = -1i32;

assert_eq!(n.leading_ones(), 32);
Run

返回 self 二进制表示形式中的尾随数字。

Examples

基本用法:

let n = 3i32;

assert_eq!(n.trailing_ones(), 2);
Run

将位左移指定的量 n,将截断的位包装到结果整数的末尾。

请注意,此操作与 << 移位运算符不同!

Examples

基本用法:

let n = 0x10000b3i32;
let m = 0xb301;

assert_eq!(n.rotate_left(8), m);
Run

将位右移指定的量 n,将截断的位包装到结果整数的开头。

请注意,此操作与 >> 移位运算符不同!

Examples

基本用法:

let n = 0xb301i32;
let m = 0x10000b3;

assert_eq!(n.rotate_right(8), m);
Run

反转整数的字节顺序。

Examples

基本用法:

let n = 0x12345678i32;

let m = n.swap_bytes();

assert_eq!(m, 0x78563412);
Run

反转整数中的位顺序。 最低有效位变为最高有效位,第二最低有效位变为第二最高有效位,依此类推。

Examples

基本用法:

let n = 0x12345678i32;
let m = n.reverse_bits();

assert_eq!(m, 0x1e6a2c48);
assert_eq!(0, 0i32.reverse_bits());
Run

将整数从大端字节序转换为目标的字节序。

在大端节序序上,这是个禁忌。在小端字节序上,字节被交换。

Examples

基本用法:

let n = 0x1Ai32;

if cfg!(target_endian = "big") {
    assert_eq!(i32::from_be(n), n)
} else {
    assert_eq!(i32::from_be(n), n.swap_bytes())
}
Run

将整数从小端字节序转换为目标的字节序。

在小端字节序上,这是个禁忌。在大字节序中,字节被交换。

Examples

基本用法:

let n = 0x1Ai32;

if cfg!(target_endian = "little") {
    assert_eq!(i32::from_le(n), n)
} else {
    assert_eq!(i32::from_le(n), n.swap_bytes())
}
Run

self 从目标的字节序转换为大字节序。

在大端节序序上,这是个禁忌。在小端字节序上,字节被交换。

Examples

基本用法:

let n = 0x1Ai32;

if cfg!(target_endian = "big") {
    assert_eq!(n.to_be(), n)
} else {
    assert_eq!(n.to_be(), n.swap_bytes())
}
Run

self 从目标的字节序转换为 Little Endian。

在小端字节序上,这是个禁忌。在大字节序中,字节被交换。

Examples

基本用法:

let n = 0x1Ai32;

if cfg!(target_endian = "little") {
    assert_eq!(n.to_le(), n)
} else {
    assert_eq!(n.to_le(), n.swap_bytes())
}
Run

检查整数加法。 计算 self + rhs,如果发生溢出则返回 None

Examples

基本用法:

assert_eq!((i32::MAX - 2).checked_add(1), Some(i32::MAX - 1));
assert_eq!((i32::MAX - 2).checked_add(3), None);
Run
🔬 This is a nightly-only experimental API. (unchecked_math #85122)

niche optimization path

未经检查的整数加法。 假设不会发生溢出,则计算 self + rhs

Safety

当以下情况时,这导致未定义的行为 self + rhs > i32::MAX or self + rhs < i32::MIN, i.e. 当 checked_add 返回 None 时。

检查整数减法。 计算 self - rhs,如果发生溢出则返回 None

Examples

基本用法:

assert_eq!((i32::MIN + 2).checked_sub(1), Some(i32::MIN + 1));
assert_eq!((i32::MIN + 2).checked_sub(3), None);
Run
🔬 This is a nightly-only experimental API. (unchecked_math #85122)

niche optimization path

未经检查的整数减法。 假设不会发生溢出,则计算 self - rhs

Safety

当以下情况时,这导致未定义的行为 self - rhs > i32::MAX or self - rhs < i32::MIN, i.e. 当 checked_sub 返回 None 时。

检查整数乘法。 计算 self * rhs,如果发生溢出则返回 None

Examples

基本用法:

assert_eq!(i32::MAX.checked_mul(1), Some(i32::MAX));
assert_eq!(i32::MAX.checked_mul(2), None);
Run
🔬 This is a nightly-only experimental API. (unchecked_math #85122)

niche optimization path

未经检查的整数乘法。 假设不会发生溢出,则计算 self * rhs

Safety

当以下情况时,这导致未定义的行为 self * rhs > i32::MAX or self * rhs < i32::MIN, i.e. 当 checked_mul 返回 None 时。

检查整数除法。 计算 self / rhs,如果 rhs == 0 或除法导致溢出,则返回 None

Examples

基本用法:

assert_eq!((i32::MIN + 1).checked_div(-1), Some(2147483647));
assert_eq!(i32::MIN.checked_div(-1), None);
assert_eq!((1i32).checked_div(0), None);
Run

检查欧几里得除法。 计算 self.div_euclid(rhs),如果 rhs == 0 或除法导致溢出,则返回 None

Examples

基本用法:

assert_eq!((i32::MIN + 1).checked_div_euclid(-1), Some(2147483647));
assert_eq!(i32::MIN.checked_div_euclid(-1), None);
assert_eq!((1i32).checked_div_euclid(0), None);
Run

检查整数余数。 计算 self % rhs,如果 rhs == 0 或除法导致溢出,则返回 None

Examples

基本用法:


assert_eq!(5i32.checked_rem(2), Some(1));
assert_eq!(5i32.checked_rem(0), None);
assert_eq!(i32::MIN.checked_rem(-1), None);
Run

检查欧几里得的余数。 计算 self.rem_euclid(rhs),如果 rhs == 0 或除法导致溢出,则返回 None

Examples

基本用法:

assert_eq!(5i32.checked_rem_euclid(2), Some(1));
assert_eq!(5i32.checked_rem_euclid(0), None);
assert_eq!(i32::MIN.checked_rem_euclid(-1), None);
Run

检查否定。计算 -self,如果为 self == MIN,则返回 None

Examples

基本用法:


assert_eq!(5i32.checked_neg(), Some(-5));
assert_eq!(i32::MIN.checked_neg(), None);
Run

检查左移。 计算 self << rhs,如果 rhs 大于或等于 self 中的位数,则返回 None

Examples

基本用法:

assert_eq!(0x1i32.checked_shl(4), Some(0x10));
assert_eq!(0x1i32.checked_shl(129), None);
Run
🔬 This is a nightly-only experimental API. (unchecked_math #85122)

niche optimization path

未检查的左移。 计算 self << rhs,假设 rhs 小于 self 中的位数。

Safety

如果 rhs 大于或等于 self 中的位数,则会导致未定义的行为,即

checked_shl 返回 None 时。

检查右移。 计算 self >> rhs,如果 rhs 大于或等于 self 中的位数,则返回 None

Examples

基本用法:

assert_eq!(0x10i32.checked_shr(4), Some(0x1));
assert_eq!(0x10i32.checked_shr(128), None);
Run
🔬 This is a nightly-only experimental API. (unchecked_math #85122)

niche optimization path

未检查右移。 计算 self >> rhs,假设 rhs 小于 self 中的位数。

Safety

如果 rhs 大于或等于 self 中的位数,则会导致未定义的行为,即

checked_shr 返回 None 时。

检查的绝对值。 计算 self.abs(),如果为 self == MIN,则返回 None

Examples

基本用法:


assert_eq!((-5i32).checked_abs(), Some(5));
assert_eq!(i32::MIN.checked_abs(), None);
Run

检查取幂。 计算 self.pow(exp),如果发生溢出则返回 None

Examples

基本用法:

assert_eq!(8i32.checked_pow(2), Some(64));
assert_eq!(i32::MAX.checked_pow(2), None);
Run

饱和整数加法。 计算 self + rhs,在数字范围内饱和,而不是溢出。

Examples

基本用法:

assert_eq!(100i32.saturating_add(1), 101);
assert_eq!(i32::MAX.saturating_add(100), i32::MAX);
assert_eq!(i32::MIN.saturating_add(-1), i32::MIN);
Run

饱和整数减法。 计算 self - rhs,在数字范围内饱和,而不是溢出。

Examples

基本用法:

assert_eq!(100i32.saturating_sub(127), -27);
assert_eq!(i32::MIN.saturating_sub(100), i32::MIN);
assert_eq!(i32::MAX.saturating_sub(-1), i32::MAX);
Run

饱和整数求反。 计算 -self,如果 self == MIN 则返回 MAX 而不是溢出。

Examples

基本用法:

assert_eq!(100i32.saturating_neg(), -100);
assert_eq!((-100i32).saturating_neg(), 100);
assert_eq!(i32::MIN.saturating_neg(), i32::MAX);
assert_eq!(i32::MAX.saturating_neg(), i32::MIN + 1);
Run

饱和绝对值。 计算 self.abs(),如果 self == MIN 则返回 MAX 而不是溢出。

Examples

基本用法:

assert_eq!(100i32.saturating_abs(), 100);
assert_eq!((-100i32).saturating_abs(), 100);
assert_eq!(i32::MIN.saturating_abs(), i32::MAX);
assert_eq!((i32::MIN + 1).saturating_abs(), i32::MAX);
Run

饱和整数乘法。 计算 self * rhs,在数字范围内饱和,而不是溢出。

Examples

基本用法:


assert_eq!(10i32.saturating_mul(12), 120);
assert_eq!(i32::MAX.saturating_mul(10), i32::MAX);
assert_eq!(i32::MIN.saturating_mul(10), i32::MIN);
Run

饱和整数幂。 计算 self.pow(exp),在数字范围内饱和,而不是溢出。

Examples

基本用法:


assert_eq!((-4i32).saturating_pow(3), -64);
assert_eq!(i32::MIN.saturating_pow(2), i32::MAX);
assert_eq!(i32::MIN.saturating_pow(3), i32::MIN);
Run

包装 (modular) 添加。 计算 self + rhs,在类型的边界处回绕。

Examples

基本用法:

assert_eq!(100i32.wrapping_add(27), 127);
assert_eq!(i32::MAX.wrapping_add(2), i32::MIN + 1);
Run

包装 (modular) 减法。 计算 self - rhs,在类型的边界处回绕。

Examples

基本用法:

assert_eq!(0i32.wrapping_sub(127), -127);
assert_eq!((-2i32).wrapping_sub(i32::MAX), i32::MAX);
Run

包装 (modular) 乘法。 计算 self * rhs,在类型的边界处回绕。

Examples

基本用法:

assert_eq!(10i32.wrapping_mul(12), 120);
assert_eq!(11i8.wrapping_mul(12), -124);
Run

包装 (modular) 分区。计算 self / rhs,在类型的边界处回绕。

可能发生这种换行的唯一情况是将 MIN / -1 除以有符号类型 (其中 MIN 是该类型的负最小值)。这等效于 -MIN,它是一个太大的正值,无法在类型中表示。 在这种情况下,此函数将返回 MIN 本身。

Panics

如果 rhs 为 0,则此函数将为 panic。

Examples

基本用法:

assert_eq!(100i32.wrapping_div(10), 10);
assert_eq!((-128i8).wrapping_div(-1), -128);
Run

包装欧几里得除法。 计算 self.div_euclid(rhs),在类型的边界处回绕。

包装只会在 MIN / -1 上的带符号类型 (其中 MIN 是该类型的负最小值) 上发生。 这等效于 -MIN,它是一个太大的正值,无法在类型中表示。 在这种情况下,此方法将返回 MIN 本身。

Panics

如果 rhs 为 0,则此函数将为 panic。

Examples

基本用法:

assert_eq!(100i32.wrapping_div_euclid(10), 10);
assert_eq!((-128i8).wrapping_div_euclid(-1), -128);
Run

包装 (modular) 余数。计算 self % rhs,在类型的边界处回绕。

这种折回实际上在数学上从来没有发生过。实现工件会导致 x % y 对于带符号类型的 MIN / -1 无效 (其中 MIN 为负最小值)。

在这种情况下,此函数返回 0

Panics

如果 rhs 为 0,则此函数将为 panic。

Examples

基本用法:

assert_eq!(100i32.wrapping_rem(10), 0);
assert_eq!((-128i8).wrapping_rem(-1), 0);
Run

包装欧几里得的余数。计算 self.rem_euclid(rhs),在类型的边界处回绕。

包装只会在 MIN % -1 上的带符号类型 (其中 MIN 是该类型的负最小值) 上发生。 在这种情况下,此方法返回 0。

Panics

如果 rhs 为 0,则此函数将为 panic。

Examples

基本用法:

assert_eq!(100i32.wrapping_rem_euclid(10), 0);
assert_eq!((-128i8).wrapping_rem_euclid(-1), 0);
Run

包装 (modular) 取反。计算 -self,在类型的边界处回绕。

可能发生这种换行的唯一情况是对有符号类型的 MIN 求反 (其中 MIN 是该类型的负最小值) ; 否则,可能会发生这种换行。这是一个太大的正值,无法在类型中表示。 在这种情况下,此函数将返回 MIN 本身。

Examples

基本用法:

assert_eq!(100i32.wrapping_neg(), -100);
assert_eq!(i32::MIN.wrapping_neg(), i32::MIN);
Run

无 Panic - 按位左移; 产生 self << mask(rhs),其中 mask 删除 rhs 的所有高位,这些高位将导致移位超过该类型的位宽。

注意,这与左旋不同; 环绕左移的 RHS 限于该类型的范围,而不是从 LHS 移出的位返回到另一端。

所有原始整数类型都实现了 rotate_left 函数,而您可能想要的是 rotate_left 函数。

Examples

基本用法:

assert_eq!((-1i32).wrapping_shl(7), -128);
assert_eq!((-1i32).wrapping_shl(128), -1);
Run

无 Panic - 按位右移; 产生 self >> mask(rhs),其中 mask 删除 rhs 的所有高位,这些高位将导致移位超过该类型的位宽。

注意,这与右旋转不同。换行右移的 RHS 限于类型的范围,而不是从 LHS 移出的位返回到另一端。

所有原始整数类型都实现了 rotate_right 函数,而您可能想要的是 rotate_right 函数。

Examples

基本用法:

assert_eq!((-128i32).wrapping_shr(7), -1);
assert_eq!((-128i16).wrapping_shr(64), -128);
Run

包装 (modular) 绝对值。计算 self.abs(),在类型的边界处回绕。

可能发生这种换行的唯一情况是,当类型取负的最小值的绝对值时; 这是一个太大的正值,无法在类型中表示。 在这种情况下,此函数将返回 MIN 本身。

Examples

基本用法:

assert_eq!(100i32.wrapping_abs(), 100);
assert_eq!((-100i32).wrapping_abs(), 100);
assert_eq!(i32::MIN.wrapping_abs(), i32::MIN);
assert_eq!((-128i8).wrapping_abs() as u8, 128);
Run

计算 self 的绝对值,而不会引起任何包裹或恐慌。

Examples

基本用法:

assert_eq!(100i32.unsigned_abs(), 100u32);
assert_eq!((-100i32).unsigned_abs(), 100u32);
assert_eq!((-128i8).unsigned_abs(), 128u8);
Run

包装 (modular) 指数。 计算 self.pow(exp),在类型的边界处回绕。

Examples

基本用法:

assert_eq!(3i32.wrapping_pow(4), 81);
assert_eq!(3i8.wrapping_pow(5), -13);
assert_eq!(3i8.wrapping_pow(6), -39);
Run

计算 self + rhs

返回一个加法元组以及一个布尔值,该布尔值指示是否会发生算术溢出。 如果将发生溢出,则返回包装的值。

Examples

基本用法:


assert_eq!(5i32.overflowing_add(2), (7, false));
assert_eq!(i32::MAX.overflowing_add(1), (i32::MIN, true));
Run

计算 self-rhs

返回一个减法的元组以及一个布尔值,该布尔值指示是否会发生算术溢出。 如果将发生溢出,则返回包装的值。

Examples

基本用法:


assert_eq!(5i32.overflowing_sub(2), (3, false));
assert_eq!(i32::MIN.overflowing_sub(1), (i32::MAX, true));
Run

计算 selfrhs 的乘法。

返回乘法的元组以及一个布尔值,该布尔值指示是否会发生算术溢出。 如果将发生溢出,则返回包装的值。

Examples

基本用法:

assert_eq!(5i32.overflowing_mul(2), (10, false));
assert_eq!(1_000_000_000i32.overflowing_mul(10), (1410065408, true));
Run

self 除以 rhs 时计算除数。

返回除数的元组以及指示是否将发生算术溢出的布尔值。 如果将发生溢出,则返回 self。

Panics

如果 rhs 为 0,则此函数将为 panic。

Examples

基本用法:


assert_eq!(5i32.overflowing_div(2), (2, false));
assert_eq!(i32::MIN.overflowing_div(-1), (i32::MIN, true));
Run

计算欧几里得除法 self.div_euclid(rhs) 的商。

返回除数的元组以及指示是否将发生算术溢出的布尔值。 如果将发生溢出,则返回 self

Panics

如果 rhs 为 0,则此函数将为 panic。

Examples

基本用法:

assert_eq!(5i32.overflowing_div_euclid(2), (2, false));
assert_eq!(i32::MIN.overflowing_div_euclid(-1), (i32::MIN, true));
Run

self 除以 rhs 时计算余数。

返回除法运算后的余数元组和一个布尔值,该布尔值指示是否会发生算术溢出。 如果将发生溢出,则返回 0。

Panics

如果 rhs 为 0,则此函数将为 panic。

Examples

基本用法:


assert_eq!(5i32.overflowing_rem(2), (1, false));
assert_eq!(i32::MIN.overflowing_rem(-1), (0, true));
Run

溢出的欧几里得余数。计算 self.rem_euclid(rhs)

返回除法运算后的余数元组和一个布尔值,该布尔值指示是否会发生算术溢出。 如果将发生溢出,则返回 0。

Panics

如果 rhs 为 0,则此函数将为 panic。

Examples

基本用法:

assert_eq!(5i32.overflowing_rem_euclid(2), (1, false));
assert_eq!(i32::MIN.overflowing_rem_euclid(-1), (0, true));
Run

求反,如果等于最小值,则溢出。

返回否定形式 self 的元组以及一个布尔值,该布尔值指示是否发生了溢出。 如果 self 是最小值 (例如,对于类型 i32 的值,则为 i32::MIN),则将再次返回该最小值,并且将发生溢出时返回 true

Examples

基本用法:

assert_eq!(2i32.overflowing_neg(), (-2, false));
assert_eq!(i32::MIN.overflowing_neg(), (i32::MIN, true));
Run

将自身左移 rhs 位。

返回 self 的移位版本的元组以及一个布尔值,该布尔值指示 shift 值是否大于或等于位数。 如果移位值太大,则将值屏蔽 (N-1),其中 N 是位数,然后使用该值执行移位。

Examples

基本用法:

assert_eq!(0x1i32.overflowing_shl(4), (0x10, false));
assert_eq!(0x1i32.overflowing_shl(36), (0x10, true));
Run

将 self 右移 rhs 位。

返回 self 的移位版本的元组以及一个布尔值,该布尔值指示 shift 值是否大于或等于位数。 如果移位值太大,则将值屏蔽 (N-1),其中 N 是位数,然后使用该值执行移位。

Examples

基本用法:

assert_eq!(0x10i32.overflowing_shr(4), (0x1, false));
assert_eq!(0x10i32.overflowing_shr(36), (0x1, true));
Run

计算 self 的绝对值。

返回 self 的绝对版本的元组以及一个布尔值,该布尔值指示是否发生了溢出。 如果 self 是最小值 (e.g., i32::MIN for values of type i32), 然后将再次返回最小值,并在发生溢出时返回 true。

Examples

基本用法:

assert_eq!(10i32.overflowing_abs(), (10, false));
assert_eq!((-10i32).overflowing_abs(), (10, false));
assert_eq!((i32::MIN).overflowing_abs(), (i32::MIN, true));
Run

通过平方运算,将自己提升到 exp 的功效。

返回一个指数的元组以及一个 bool,指示是否发生了溢出。

Examples

基本用法:

assert_eq!(3i32.overflowing_pow(4), (81, false));
assert_eq!(3i8.overflowing_pow(5), (-13, true));
Run

通过平方运算,将自己提升到 exp 的功效。

Examples

基本用法:

let x: i32 = 2; // or any other integer type

assert_eq!(x.pow(5), 32);
Run

计算 self 的欧几里得除以 rhs 的商。

这将计算整数 q,使得 self = q * rhs + rr = 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: i32 = 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 * 2
Run

计算 self (mod rhs) 的最小非负余数。

就像通过欧几里得除法算法一样 - 给定 r = self.rem_euclid(rhs)self = rhs * self.div_euclid(rhs) + r0 <= r < abs(rhs)

Panics

如果 rhs 为 0 或除法导致溢出,则该函数将为 panic。

Examples

基本用法:

let a: i32 = 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
🔬 This is a nightly-only experimental API. (int_log #70887)

返回数字相对于任意基数的对数。

由于实现细节,此方法可能未优化; log2 可以更有效地为基数 2 生成结果,而 log10 可以更有效地为基数 10 生成结果。

Panics

当数字为零时,或基数不至少为 2 时; 它在调试模式下为 panics,在发布模式下返回值被包装为 0 (该方法可以返回 0 的唯一情况)。

Examples

#![feature(int_log)]
assert_eq!(5i32.log(5), 1);
Run
🔬 This is a nightly-only experimental API. (int_log #70887)

返回数字的以 2 为底的对数。

Panics

当数字为零时,它在调试模式下为 panics,在发布模式下返回值包装为 0 (该方法可以返回 0 的唯一情况)。

Examples

#![feature(int_log)]
assert_eq!(2i32.log2(), 1);
Run
🔬 This is a nightly-only experimental API. (int_log #70887)

返回数字的以 10 为底的对数。

Panics

当数字为零时,它在调试模式下为 panics,在发布模式下返回值包装为 0 (该方法可以返回 0 的唯一情况)。

Example

#![feature(int_log)]
assert_eq!(10i32.log10(), 1);
Run
🔬 This is a nightly-only experimental API. (int_log #70887)

返回数字相对于任意基数的对数。

如果数字为负数或零,或者基数不至少为 2,则返回 None

由于实现细节,此方法可能未优化; checked_log2 可以更有效地为基数 2 生成结果,而 checked_log10 可以更有效地为基数 10 生成结果。

Examples

#![feature(int_log)]
assert_eq!(5i32.checked_log(5), Some(1));
Run
🔬 This is a nightly-only experimental API. (int_log #70887)

返回数字的以 2 为底的对数。

如果数字为负数或零,则返回 None

Examples

#![feature(int_log)]
assert_eq!(2i32.checked_log2(), Some(1));
Run
🔬 This is a nightly-only experimental API. (int_log #70887)

返回数字的以 10 为底的对数。

如果数字为负数或零,则返回 None

Example

#![feature(int_log)]
assert_eq!(10i32.checked_log10(), Some(1));
Run

计算 self 的绝对值。

溢出行为

的绝对值 i32::MIN 不能表示为 i32, 并尝试计算它会导致溢出。 这意味着在这种情况下,处于调试模式的代码将触发 panic,并且优化后的代码将返回

i32::MIN 没有 panic。

Examples

基本用法:

assert_eq!(10i32.abs(), 10);
assert_eq!((-10i32).abs(), 10);
Run

返回一个表示 self 的符号的数字。

  • 0 如果数字为零
  • 1 如果数字为正
  • -1 如果数字为负

Examples

基本用法:

assert_eq!(10i32.signum(), 1);
assert_eq!(0i32.signum(), 0);
assert_eq!((-10i32).signum(), -1);
Run

如果 self 为正数,则返回 true; 如果数字为零或负数,则返回 false

Examples

基本用法:

assert!(10i32.is_positive());
assert!(!(-10i32).is_positive());
Run

如果 self 为负,则返回 true; 如果数字为零或正,则返回 false

Examples

基本用法:

assert!((-10i32).is_negative());
assert!(!10i32.is_negative());
Run

以大端 (网络) 字节顺序将这个整数的内存表示形式作为字节数组返回。

Examples

let bytes = 0x12345678i32.to_be_bytes();
assert_eq!(bytes, [0x12, 0x34, 0x56, 0x78]);
Run

以小端字节顺序将这个整数的内存表示形式返回为字节数组。

Examples

let bytes = 0x12345678i32.to_le_bytes();
assert_eq!(bytes, [0x78, 0x56, 0x34, 0x12]);
Run

将此整数的内存表示作为本机字节顺序的字节数组返回。

由于使用了目标平台的原生字节序,因此,可移植代码应酌情使用 to_be_bytesto_le_bytes

Examples

let bytes = 0x12345678i32.to_ne_bytes();
assert_eq!(
    bytes,
    if cfg!(target_endian = "big") {
        [0x12, 0x34, 0x56, 0x78]
    } else {
        [0x78, 0x56, 0x34, 0x12]
    }
);
Run

从其表示形式以 big endian 的字节数组形式创建一个整数值。

Examples

let value = i32::from_be_bytes([0x12, 0x34, 0x56, 0x78]);
assert_eq!(value, 0x12345678);
Run

从切片而不是数组开始时,可以使用容易出错的转换 API:

use std::convert::TryInto;

fn read_be_i32(input: &mut &[u8]) -> i32 {
    let (int_bytes, rest) = input.split_at(std::mem::size_of::<i32>());
    *input = rest;
    i32::from_be_bytes(int_bytes.try_into().unwrap())
}
Run

从它的表示形式以 little endian 的字节数组形式创建一个整数值。

Examples

let value = i32::from_le_bytes([0x78, 0x56, 0x34, 0x12]);
assert_eq!(value, 0x12345678);
Run

从切片而不是数组开始时,可以使用容易出错的转换 API:

use std::convert::TryInto;

fn read_le_i32(input: &mut &[u8]) -> i32 {
    let (int_bytes, rest) = input.split_at(std::mem::size_of::<i32>());
    *input = rest;
    i32::from_le_bytes(int_bytes.try_into().unwrap())
}
Run

从其内存表示形式创建一个整数值,以原生字节序表示为字节数组。

由于使用了目标平台的原生字节序,因此可移植代码可能希望酌情使用 from_be_bytesfrom_le_bytes

Examples

let value = i32::from_ne_bytes(if cfg!(target_endian = "big") {
    [0x12, 0x34, 0x56, 0x78]
} else {
    [0x78, 0x56, 0x34, 0x12]
});
assert_eq!(value, 0x12345678);
Run

从切片而不是数组开始时,可以使用容易出错的转换 API:

use std::convert::TryInto;

fn read_ne_i32(input: &mut &[u8]) -> i32 {
    let (int_bytes, rest) = input.split_at(std::mem::size_of::<i32>());
    *input = rest;
    i32::from_ne_bytes(int_bytes.try_into().unwrap())
}
Run
👎 Deprecating in a future Rust version:

replaced by the MIN associated constant on this type

新代码应优先使用 i32::MIN instead.

返回此整数类型可以表示的最小值。

👎 Deprecating in a future Rust version:

replaced by the MAX associated constant on this type

新代码应优先使用 i32::MAX instead.

返回此整数类型可以表示的最大值。

Trait Implementations

应用 + 运算符后的结果类型。

执行 + 操作。 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

source 执行复制分配。 Read more

使用给定的格式化程序格式化该值。 Read more

Returns the default value of 0

使用给定的格式化程序格式化该值。 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

执行 /= 操作。 Read more

Converts a NonZeroI32 into an i32

Converts a bool to a i32. The resulting value is 0 for false and 1 for true values.

Examples

assert_eq!(i32::from(true), 1);
assert_eq!(i32::from(false), 0);
Run

Converts i16 to i32 losslessly.

Converts i8 to i32 losslessly.

Converts u16 to i32 losslessly.

Converts u8 to i32 losslessly.

可以从解析中返回的相关错误。

解析字符串 s 以返回此类型的值。 Read more

将该值输入给定的 HasherRead more

将这种类型的切片送入给定的 Hasher 中。 Read more

使用给定的格式化程序格式化该值。

使用给定的格式化程序格式化该值。

应用 * 运算符后的结果类型。

执行 * 操作。 Read more

应用 * 运算符后的结果类型。

执行 * 操作。 Read more

应用 * 运算符后的结果类型。

执行 * 操作。 Read more

应用 * 运算符后的结果类型。

执行 * 操作。 Read more

执行 *= 操作。 Read more

执行 *= 操作。 Read more

应用 - 运算符后的结果类型。

执行一元 - 操作。 Read more

应用 - 运算符后的结果类型。

执行一元 - 操作。 Read more

应用 ! 运算符后的结果类型。

执行一元 ! 操作。 Read more

应用 ! 运算符后的结果类型。

执行一元 ! 操作。 Read more

使用给定的格式化程序格式化该值。

此方法返回 selfother 之间的 OrderingRead more

比较并返回两个值中的最大值。 Read more

比较并返回两个值中的最小值。 Read more

将值限制为一定的时间间隔。 Read more

此方法测试 selfother 值是否相等,并由 == 使用。 Read more

此方法测试 !=

如果存在,则此方法返回 selfother 值之间的顺序。 Read more

此方法测试的内容少于 (对于 selfother),并且由 < 操作员使用。 Read more

此方法测试小于或等于 (对于 selfother),并且由 <= 运算符使用。 Read more

此方法测试是否大于或等于 (对于 selfother),并且由 >= 运算符使用。 Read more

此方法测试大于 (对于 selfother),并且由 > 操作员使用。 Read more

该方法采用迭代器并通过乘以项从元素生成 SelfRead more

该方法采用迭代器并通过乘以项从元素生成 SelfRead more

应用 % 运算符后的结果类型。

执行 % 操作。 Read more

应用 % 运算符后的结果类型。

执行 % 操作。 Read more

应用 % 运算符后的结果类型。

执行 % 操作。 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

应用 << 运算符后的结果类型。

执行 << 操作。 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

应用 >> 运算符后的结果类型。

执行 >> 操作。 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 countsuccessor 而获得的值。 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 countsuccessor 而获得的值。 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

返回从 startend 所需的 successor 步骤的数量。 Read more

🔬 This is a nightly-only experimental API. (step_trait #42168)

recently redesigned

返回通过将 self countsuccessor 而获得的值。 Read more

🔬 This is a nightly-only experimental API. (step_trait #42168)

recently redesigned

返回通过获取 self count 次的 predecessor 而获得的值。 Read more

应用 - 运算符后的结果类型。

执行 - 操作。 Read more

应用 - 运算符后的结果类型。

执行 - 操作。 Read more

应用 - 运算符后的结果类型。

执行 - 操作。 Read more

应用 - 运算符后的结果类型。

执行 - 操作。 Read more

执行 -= 操作。 Read more

执行 -= 操作。 Read more

使用迭代器并通过 “summing up” 项从元素生成 Self 的方法。 Read more

使用迭代器并通过 “summing up” 项从元素生成 Self 的方法。 Read more

尝试从源号码类型创建目标号码类型。 如果源值超出目标类型的范围,则返回错误。

发生转换错误时返回的类型。

尝试从源号码类型创建目标号码类型。 如果源值超出目标类型的范围,则返回错误。

发生转换错误时返回的类型。

尝试从源号码类型创建目标号码类型。 如果源值超出目标类型的范围,则返回错误。

发生转换错误时返回的类型。

尝试从源号码类型创建目标号码类型。 如果源值超出目标类型的范围,则返回错误。

发生转换错误时返回的类型。

尝试从源号码类型创建目标号码类型。 如果源值超出目标类型的范围,则返回错误。

发生转换错误时返回的类型。

尝试从源号码类型创建目标号码类型。 如果源值超出目标类型的范围,则返回错误。

发生转换错误时返回的类型。

尝试从源号码类型创建目标号码类型。 如果源值超出目标类型的范围,则返回错误。

发生转换错误时返回的类型。

使用给定的格式化程序格式化该值。

使用给定的格式化程序格式化该值。

Auto Trait Implementations

Blanket Implementations

获取 selfTypeIdRead more

从拥有的值中一成不变地借用。 Read more

从拥有的值中借用。 Read more

执行转换。

执行转换。

获得所有权后的结果类型。

通常通过克隆从借用数据中创建拥有的数据。 Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into #41263)

recently added

使用借来的数据来替换拥有的数据,通常是通过克隆。 Read more

将给定值转换为 StringRead more

发生转换错误时返回的类型。

执行转换。

发生转换错误时返回的类型。

执行转换。