Skip to main content

Int16

Struct Int16 

Source
#[repr(C, align(2))]
pub struct Int16(pub i16);
Expand description

A wire-encoded i16

Tuple Fields§

§0: i16

Methods from Deref<Target = i16>§

1.0.0 · Source

pub fn count_ones(self) -> u32

Returns the number of ones in the binary representation of self.

§Examples
let n = 0b100_0000i16;

assert_eq!(n.count_ones(), 1);
1.0.0 · Source

pub fn count_zeros(self) -> u32

Returns the number of zeros in the binary representation of self.

§Examples
assert_eq!(i16::MAX.count_zeros(), 1);
1.0.0 · Source

pub fn leading_zeros(self) -> u32

Returns the number of leading zeros in the binary representation of self.

Depending on what you’re doing with the value, you might also be interested in the ilog2 function which returns a consistent number, even if the type widens.

§Examples
let n = -1i16;

assert_eq!(n.leading_zeros(), 0);
1.0.0 · Source

pub fn trailing_zeros(self) -> u32

Returns the number of trailing zeros in the binary representation of self.

§Examples
let n = -4i16;

assert_eq!(n.trailing_zeros(), 2);
1.46.0 · Source

pub fn leading_ones(self) -> u32

Returns the number of leading ones in the binary representation of self.

§Examples
let n = -1i16;

assert_eq!(n.leading_ones(), 16);
1.46.0 · Source

pub fn trailing_ones(self) -> u32

Returns the number of trailing ones in the binary representation of self.

§Examples
let n = 3i16;

assert_eq!(n.trailing_ones(), 2);
1.97.0 · Source

pub fn isolate_highest_one(self) -> i16

Returns self with only the most significant bit set, or 0 if the input is 0.

§Examples
let n: i16 = 0b_01100100;

assert_eq!(n.isolate_highest_one(), 0b_01000000);
assert_eq!(0_i16.isolate_highest_one(), 0);
1.97.0 · Source

pub fn isolate_lowest_one(self) -> i16

Returns self with only the least significant bit set, or 0 if the input is 0.

§Examples
let n: i16 = 0b_01100100;

assert_eq!(n.isolate_lowest_one(), 0b_00000100);
assert_eq!(0_i16.isolate_lowest_one(), 0);
1.97.0 · Source

pub fn highest_one(self) -> Option<u32>

Returns the index of the highest bit set to one in self, or None if self is 0.

Note that for non-negative numbers, this is equivalent to checked_ilog2.

§Examples
assert_eq!(0b0_i16.highest_one(), None);
assert_eq!(0b1_i16.highest_one(), Some(0));
assert_eq!(0b1_0000_i16.highest_one(), Some(4));
assert_eq!(0b1_1111_i16.highest_one(), Some(4));
1.97.0 · Source

pub fn lowest_one(self) -> Option<u32>

Returns the index of the lowest bit set to one in self, or None if self is 0.

§Examples
assert_eq!(0b0_i16.lowest_one(), None);
assert_eq!(0b1_i16.lowest_one(), Some(0));
assert_eq!(0b1_0000_i16.lowest_one(), Some(4));
assert_eq!(0b1_1111_i16.lowest_one(), Some(0));
1.87.0 · Source

pub fn cast_unsigned(self) -> u16

Returns the bit pattern of self reinterpreted as an unsigned integer of the same size.

This produces the same result as an as cast, but ensures that the bit-width remains the same.

§Examples
let n = -1i16;

assert_eq!(n.cast_unsigned(), u16::MAX);
Source

pub fn saturating_cast_unsigned(self) -> u16

🔬This is a nightly-only experimental API. (integer_cast_extras)

Saturating conversion of self to an unsigned integer of the same size.

Negative values are clamped to 0.

For other kinds of unsigned integer casts, see cast_unsigned, checked_cast_unsigned, or strict_cast_unsigned.

§Examples
#![feature(integer_cast_extras)]
let n = i16::MIN;

assert_eq!(n.saturating_cast_unsigned(), 0u16);
assert_eq!(64i16.saturating_cast_unsigned(), 64u16);
Source

pub fn checked_cast_unsigned(self) -> Option<u16>

🔬This is a nightly-only experimental API. (integer_cast_extras)

Checked conversion of self to an unsigned integer of the same size, returning None if self is negative.

For other kinds of unsigned integer casts, see cast_unsigned, saturating_cast_unsigned, or strict_cast_unsigned.

§Examples
#![feature(integer_cast_extras)]
let n = i16::MIN;

assert_eq!(n.checked_cast_unsigned(), None);
assert_eq!(64i16.checked_cast_unsigned(), Some(64u16));
Source

pub fn strict_cast_unsigned(self) -> u16

🔬This is a nightly-only experimental API. (integer_cast_extras)

Strict conversion of self to an unsigned integer of the same size, which panics if self is negative.

For other kinds of unsigned integer casts, see cast_unsigned, checked_cast_unsigned, or saturating_cast_unsigned.

§Examples
ⓘ
#![feature(integer_cast_extras)]
let _ = i16::MIN.strict_cast_unsigned();
1.0.0 · Source

pub fn rotate_left(self, n: u32) -> i16

Shifts the bits to the left by a specified amount, n, wrapping the truncated bits to the end of the resulting integer.

rotate_left(n) is equivalent to applying rotate_left(1) a total of n times. In particular, a rotation by the number of bits in self returns the input value unchanged.

Please note this isn’t the same operation as the << shifting operator!

§Examples
let n = -0x5ffdi16;
let m = 0x003a;

assert_eq!(n.rotate_left(4), m);
assert_eq!(n.rotate_left(1024), n);
1.0.0 · Source

pub fn rotate_right(self, n: u32) -> i16

Shifts the bits to the right by a specified amount, n, wrapping the truncated bits to the beginning of the resulting integer.

rotate_right(n) is equivalent to applying rotate_right(1) a total of n times. In particular, a rotation by the number of bits in self returns the input value unchanged.

Please note this isn’t the same operation as the >> shifting operator!

§Examples
let n = 0x003ai16;
let m = -0x5ffd;

assert_eq!(n.rotate_right(4), m);
assert_eq!(n.rotate_right(1024), n);
1.0.0 · Source

pub fn swap_bytes(self) -> i16

Reverses the byte order of the integer.

§Examples
let n = 0x1234i16;

let m = n.swap_bytes();

assert_eq!(m, 0x3412);
1.37.0 · Source

pub fn reverse_bits(self) -> i16

Reverses the order of bits in the integer. The least significant bit becomes the most significant bit, second least-significant bit becomes second most-significant bit, etc.

§Examples
let n = 0x1234i16;
let m = n.reverse_bits();

assert_eq!(m, 0x2c48);
assert_eq!(0, 0i16.reverse_bits());
1.0.0 · Source

pub fn to_be(self) -> i16

Swaps bytes of self on little endian targets.

On big endian this is a no-op.

The returned value has the same type as self, and will be interpreted as (a potentially different) value of a native-endian i16.

See to_be_bytes() for a type-safe alternative.

§Examples
let n = 0x1Ai16;

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

pub fn to_le(self) -> i16

Swaps bytes of self on big endian targets.

On little endian this is a no-op.

The returned value has the same type as self, and will be interpreted as (a potentially different) value of a native-endian i16.

See to_le_bytes() for a type-safe alternative.

§Examples
let n = 0x1Ai16;

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

pub fn checked_add(self, rhs: i16) -> Option<i16>

Checked integer addition. Computes self + rhs, returning None if overflow occurred.

§Examples
assert_eq!((i16::MAX - 2).checked_add(1), Some(i16::MAX - 1));
assert_eq!((i16::MAX - 2).checked_add(3), None);
1.91.0 · Source

pub fn strict_add(self, rhs: i16) -> i16

Strict integer addition. Computes self + rhs, panicking if overflow occurred.

§Panics
§Overflow behavior

This function will always panic on overflow, regardless of whether overflow checks are enabled.

§Examples
assert_eq!((i16::MAX - 2).strict_add(1), i16::MAX - 1);

The following panics because of overflow:

ⓘ
let _ = (i16::MAX - 2).strict_add(3);
1.79.0 · Source

pub unsafe fn unchecked_add(self, rhs: i16) -> i16

Unchecked integer addition. Computes self + rhs, assuming overflow cannot occur.

Calling x.unchecked_add(y) is semantically equivalent to calling x.checked_add(y).unwrap_unchecked().

If you’re just trying to avoid the panic in debug mode, then do not use this. Instead, you’re looking for wrapping_add.

§Safety

This results in undefined behavior when self + rhs > i16::MAX or self + rhs < i16::MIN, i.e. when checked_add would return None.

1.66.0 · Source

pub fn checked_add_unsigned(self, rhs: u16) -> Option<i16>

Checked addition with an unsigned integer. Computes self + rhs, returning None if overflow occurred.

§Examples
assert_eq!(1i16.checked_add_unsigned(2), Some(3));
assert_eq!((i16::MAX - 2).checked_add_unsigned(3), None);
1.91.0 · Source

pub fn strict_add_unsigned(self, rhs: u16) -> i16

Strict addition with an unsigned integer. Computes self + rhs, panicking if overflow occurred.

§Panics
§Overflow behavior

This function will always panic on overflow, regardless of whether overflow checks are enabled.

§Examples
assert_eq!(1i16.strict_add_unsigned(2), 3);

The following panics because of overflow:

ⓘ
let _ = (i16::MAX - 2).strict_add_unsigned(3);
1.0.0 · Source

pub fn checked_sub(self, rhs: i16) -> Option<i16>

Checked integer subtraction. Computes self - rhs, returning None if overflow occurred.

§Examples
assert_eq!((i16::MIN + 2).checked_sub(1), Some(i16::MIN + 1));
assert_eq!((i16::MIN + 2).checked_sub(3), None);
1.91.0 · Source

pub fn strict_sub(self, rhs: i16) -> i16

Strict integer subtraction. Computes self - rhs, panicking if overflow occurred.

§Panics
§Overflow behavior

This function will always panic on overflow, regardless of whether overflow checks are enabled.

§Examples
assert_eq!((i16::MIN + 2).strict_sub(1), i16::MIN + 1);

The following panics because of overflow:

ⓘ
let _ = (i16::MIN + 2).strict_sub(3);
1.79.0 · Source

pub unsafe fn unchecked_sub(self, rhs: i16) -> i16

Unchecked integer subtraction. Computes self - rhs, assuming overflow cannot occur.

Calling x.unchecked_sub(y) is semantically equivalent to calling x.checked_sub(y).unwrap_unchecked().

If you’re just trying to avoid the panic in debug mode, then do not use this. Instead, you’re looking for wrapping_sub.

§Safety

This results in undefined behavior when self - rhs > i16::MAX or self - rhs < i16::MIN, i.e. when checked_sub would return None.

1.66.0 · Source

pub fn checked_sub_unsigned(self, rhs: u16) -> Option<i16>

Checked subtraction with an unsigned integer. Computes self - rhs, returning None if overflow occurred.

§Examples
assert_eq!(1i16.checked_sub_unsigned(2), Some(-1));
assert_eq!((i16::MIN + 2).checked_sub_unsigned(3), None);
1.91.0 · Source

pub fn strict_sub_unsigned(self, rhs: u16) -> i16

Strict subtraction with an unsigned integer. Computes self - rhs, panicking if overflow occurred.

§Panics
§Overflow behavior

This function will always panic on overflow, regardless of whether overflow checks are enabled.

§Examples
assert_eq!(1i16.strict_sub_unsigned(2), -1);

The following panics because of overflow:

ⓘ
let _ = (i16::MIN + 2).strict_sub_unsigned(3);
1.0.0 · Source

pub fn checked_mul(self, rhs: i16) -> Option<i16>

Checked integer multiplication. Computes self * rhs, returning None if overflow occurred.

§Examples
assert_eq!(i16::MAX.checked_mul(1), Some(i16::MAX));
assert_eq!(i16::MAX.checked_mul(2), None);
1.91.0 · Source

pub fn strict_mul(self, rhs: i16) -> i16

Strict integer multiplication. Computes self * rhs, panicking if overflow occurred.

§Panics
§Overflow behavior

This function will always panic on overflow, regardless of whether overflow checks are enabled.

§Examples
assert_eq!(i16::MAX.strict_mul(1), i16::MAX);

The following panics because of overflow:

ⓘ
let _ = i16::MAX.strict_mul(2);
1.79.0 · Source

pub unsafe fn unchecked_mul(self, rhs: i16) -> i16

Unchecked integer multiplication. Computes self * rhs, assuming overflow cannot occur.

Calling x.unchecked_mul(y) is semantically equivalent to calling x.checked_mul(y).unwrap_unchecked().

If you’re just trying to avoid the panic in debug mode, then do not use this. Instead, you’re looking for wrapping_mul.

§Safety

This results in undefined behavior when self * rhs > i16::MAX or self * rhs < i16::MIN, i.e. when checked_mul would return None.

1.0.0 · Source

pub fn checked_div(self, rhs: i16) -> Option<i16>

Checked integer division. Computes self / rhs, returning None if rhs == 0 or the division results in overflow.

§Examples
assert_eq!((i16::MIN + 1).checked_div(-1), Some(32767));
assert_eq!(i16::MIN.checked_div(-1), None);
assert_eq!((1i16).checked_div(0), None);
1.91.0 · Source

pub fn strict_div(self, rhs: i16) -> i16

Strict integer division. Computes self / rhs, panicking if overflow occurred.

§Panics

This function will panic if rhs is zero.

§Overflow behavior

This function will always panic on overflow, regardless of whether overflow checks are enabled.

The only case where such an overflow can occur is when one divides MIN / -1 on a signed type (where MIN is the negative minimal value for the type); the result of this is -MIN, a positive value that is too large to represent in the type.

Note that this is equivalent to normal division: MIN / -1 will also panic both in debug and release builds.

§Examples
assert_eq!((i16::MIN + 1).strict_div(-1), 32767);

The following panics because of overflow:

ⓘ
let _ = i16::MIN.strict_div(-1);

The following panics because of division by zero:

ⓘ
let _ = (1i16).strict_div(0);
1.38.0 · Source

pub fn checked_div_euclid(self, rhs: i16) -> Option<i16>

Checked Euclidean division. Computes self.div_euclid(rhs), returning None if rhs == 0 or the division results in overflow.

§Examples
assert_eq!((i16::MIN + 1).checked_div_euclid(-1), Some(32767));
assert_eq!(i16::MIN.checked_div_euclid(-1), None);
assert_eq!((1i16).checked_div_euclid(0), None);
1.91.0 · Source

pub fn strict_div_euclid(self, rhs: i16) -> i16

Strict Euclidean division. Computes self.div_euclid(rhs), panicking if overflow occurred.

§Panics

This function will panic if rhs is zero.

§Overflow behavior

This function will always panic on overflow, regardless of whether overflow checks are enabled.

The only case where such an overflow can occur is when one divides MIN / -1 on a signed type (where MIN is the negative minimal value for the type); the result of this is -MIN, a positive value that is too large to represent in the type.

Note that this is equivalent to div_euclid: MIN.div_euclid(-1) will also panic both in debug and release builds.

§Examples
assert_eq!((i16::MIN + 1).strict_div_euclid(-1), 32767);

The following panics because of overflow:

ⓘ
let _ = i16::MIN.strict_div_euclid(-1);

The following panics because of division by zero:

ⓘ
let _ = (1i16).strict_div_euclid(0);
Source

pub fn checked_div_exact(self, rhs: i16) -> Option<i16>

🔬This is a nightly-only experimental API. (exact_div)

Checked integer division without remainder. Computes self / rhs, returning None if rhs == 0, the division results in overflow, or self % rhs != 0.

§Examples
#![feature(exact_div)]
assert_eq!((i16::MIN + 1).checked_div_exact(-1), Some(32767));
assert_eq!((-5i16).checked_div_exact(2), None);
assert_eq!(i16::MIN.checked_div_exact(-1), None);
assert_eq!((1i16).checked_div_exact(0), None);
Source

pub fn div_exact(self, rhs: i16) -> Option<i16>

🔬This is a nightly-only experimental API. (exact_div)

Integer division without remainder. Computes self / rhs, returning None if self % rhs != 0.

§Panics

This function will panic if rhs == 0.

§Overflow behavior

On overflow, this function will panic if overflow checks are enabled (default in debug mode) and wrap if overflow checks are disabled (default in release mode).

§Examples
#![feature(exact_div)]
assert_eq!(64i16.div_exact(2), Some(32));
assert_eq!(64i16.div_exact(32), Some(2));
assert_eq!((i16::MIN + 1).div_exact(-1), Some(32767));
assert_eq!(65i16.div_exact(2), None);
ⓘ
#![feature(exact_div)]
let _ = 64i16.div_exact(0);
ⓘ
#![feature(exact_div)]
let _ = i16::MIN.div_exact(-1);
Source

pub unsafe fn unchecked_div_exact(self, rhs: i16) -> i16

🔬This is a nightly-only experimental API. (exact_div)

Unchecked integer division without remainder. Computes self / rhs.

§Safety

This results in undefined behavior when rhs == 0, self % rhs != 0, or self == i16::MIN && rhs == -1, i.e. when checked_div_exact would return None.

1.7.0 · Source

pub fn checked_rem(self, rhs: i16) -> Option<i16>

Checked integer remainder. Computes self % rhs, returning None if rhs == 0 or the division results in overflow.

§Examples
assert_eq!(5i16.checked_rem(2), Some(1));
assert_eq!(5i16.checked_rem(0), None);
assert_eq!(i16::MIN.checked_rem(-1), None);
1.91.0 · Source

pub fn strict_rem(self, rhs: i16) -> i16

Strict integer remainder. Computes self % rhs, panicking if the division results in overflow.

§Panics

This function will panic if rhs is zero.

§Overflow behavior

This function will always panic on overflow, regardless of whether overflow checks are enabled.

The only case where such an overflow can occur is x % y for MIN / -1 on a signed type (where MIN is the negative minimal value), which is invalid due to implementation artifacts.

§Examples
assert_eq!(5i16.strict_rem(2), 1);

The following panics because of division by zero:

ⓘ
let _ = 5i16.strict_rem(0);

The following panics because of overflow:

ⓘ
let _ = i16::MIN.strict_rem(-1);
1.38.0 · Source

pub fn checked_rem_euclid(self, rhs: i16) -> Option<i16>

Checked Euclidean remainder. Computes self.rem_euclid(rhs), returning None if rhs == 0 or the division results in overflow.

§Examples
assert_eq!(5i16.checked_rem_euclid(2), Some(1));
assert_eq!(5i16.checked_rem_euclid(0), None);
assert_eq!(i16::MIN.checked_rem_euclid(-1), None);
1.91.0 · Source

pub fn strict_rem_euclid(self, rhs: i16) -> i16

Strict Euclidean remainder. Computes self.rem_euclid(rhs), panicking if the division results in overflow.

§Panics

This function will panic if rhs is zero.

§Overflow behavior

This function will always panic on overflow, regardless of whether overflow checks are enabled.

The only case where such an overflow can occur is x % y for MIN / -1 on a signed type (where MIN is the negative minimal value), which is invalid due to implementation artifacts.

§Examples
assert_eq!(5i16.strict_rem_euclid(2), 1);

The following panics because of division by zero:

ⓘ
let _ = 5i16.strict_rem_euclid(0);

The following panics because of overflow:

ⓘ
let _ = i16::MIN.strict_rem_euclid(-1);
1.7.0 · Source

pub fn checked_neg(self) -> Option<i16>

Checked negation. Computes -self, returning None if self == MIN.

§Examples
assert_eq!(5i16.checked_neg(), Some(-5));
assert_eq!(i16::MIN.checked_neg(), None);
1.93.0 · Source

pub unsafe fn unchecked_neg(self) -> i16

Unchecked negation. Computes -self, assuming overflow cannot occur.

§Safety

This results in undefined behavior when self == i16::MIN, i.e. when checked_neg would return None.

1.91.0 · Source

pub fn strict_neg(self) -> i16

Strict negation. Computes -self, panicking if self == MIN.

§Panics
§Overflow behavior

This function will always panic on overflow, regardless of whether overflow checks are enabled.

§Examples
assert_eq!(5i16.strict_neg(), -5);

The following panics because of overflow:

ⓘ
let _ = i16::MIN.strict_neg();
1.7.0 · Source

pub fn checked_shl(self, rhs: u32) -> Option<i16>

Checked shift left. Computes self << rhs, returning None if rhs is larger than or equal to the number of bits in self.

§Examples
assert_eq!(0x1i16.checked_shl(4), Some(0x10));
assert_eq!(0x1i16.checked_shl(129), None);
assert_eq!(0x10i16.checked_shl(15), Some(0));
1.91.0 · Source

pub fn strict_shl(self, rhs: u32) -> i16

Strict shift left. Computes self << rhs, panicking if rhs is larger than or equal to the number of bits in self.

§Panics
§Overflow behavior

This function will always panic on overflow, regardless of whether overflow checks are enabled.

§Examples
assert_eq!(0x1i16.strict_shl(4), 0x10);

The following panics because of overflow:

ⓘ
let _ = 0x1i16.strict_shl(129);
1.93.0 · Source

pub unsafe fn unchecked_shl(self, rhs: u32) -> i16

Unchecked shift left. Computes self << rhs, assuming that rhs is less than the number of bits in self.

§Safety

This results in undefined behavior if rhs is larger than or equal to the number of bits in self, i.e. when checked_shl would return None.

1.87.0 · Source

pub fn unbounded_shl(self, rhs: u32) -> i16

Unbounded shift left. Computes self << rhs, without bounding the value of rhs.

If rhs is larger or equal to the number of bits in self, the entire value is shifted out, and 0 is returned.

§Examples
assert_eq!(0x1_i16.unbounded_shl(4), 0x10);
assert_eq!(0x1_i16.unbounded_shl(129), 0);
assert_eq!(0b101_i16.unbounded_shl(0), 0b101);
assert_eq!(0b101_i16.unbounded_shl(1), 0b1010);
assert_eq!(0b101_i16.unbounded_shl(2), 0b10100);
assert_eq!(42_i16.unbounded_shl(16), 0);
assert_eq!(42_i16.unbounded_shl(1).unbounded_shl(15), 0);
assert_eq!((-13_i16).unbounded_shl(16), 0);
assert_eq!((-13_i16).unbounded_shl(1).unbounded_shl(15), 0);
Source

pub fn shl_exact(self, rhs: u32) -> Option<i16>

🔬This is a nightly-only experimental API. (exact_bitshifts)

Exact shift left. Computes self << rhs as long as it can be reversed losslessly.

Returns None if any bits that would be shifted out differ from the resulting sign bit or if rhs >= i16::BITS. Otherwise, returns Some(self << rhs).

§Examples
#![feature(exact_bitshifts)]

assert_eq!(0x1i16.shl_exact(4), Some(0x10));
assert_eq!(0x1i16.shl_exact(i16::BITS - 2), Some(1 << i16::BITS - 2));
assert_eq!(0x1i16.shl_exact(i16::BITS - 1), None);
assert_eq!((-0x2i16).shl_exact(i16::BITS - 2), Some(-0x2 << i16::BITS - 2));
assert_eq!((-0x2i16).shl_exact(i16::BITS - 1), None);
Source

pub unsafe fn unchecked_shl_exact(self, rhs: u32) -> i16

🔬This is a nightly-only experimental API. (exact_bitshifts)

Unchecked exact shift left. Computes self << rhs, assuming the operation can be losslessly reversed and rhs cannot be larger than i16::BITS.

§Safety

This results in undefined behavior when rhs >= self.leading_zeros() && rhs >= self.leading_ones() i.e. when i16::shl_exact would return None.

1.7.0 · Source

pub fn checked_shr(self, rhs: u32) -> Option<i16>

Checked shift right. Computes self >> rhs, returning None if rhs is larger than or equal to the number of bits in self.

§Examples
assert_eq!(0x10i16.checked_shr(4), Some(0x1));
assert_eq!(0x10i16.checked_shr(128), None);
1.91.0 · Source

pub fn strict_shr(self, rhs: u32) -> i16

Strict shift right. Computes self >> rhs, panicking if rhs is larger than or equal to the number of bits in self.

§Panics
§Overflow behavior

This function will always panic on overflow, regardless of whether overflow checks are enabled.

§Examples
assert_eq!(0x10i16.strict_shr(4), 0x1);

The following panics because of overflow:

ⓘ
let _ = 0x10i16.strict_shr(128);
1.93.0 · Source

pub unsafe fn unchecked_shr(self, rhs: u32) -> i16

Unchecked shift right. Computes self >> rhs, assuming that rhs is less than the number of bits in self.

§Safety

This results in undefined behavior if rhs is larger than or equal to the number of bits in self, i.e. when checked_shr would return None.

1.87.0 · Source

pub fn unbounded_shr(self, rhs: u32) -> i16

Unbounded shift right. Computes self >> rhs, without bounding the value of rhs.

If rhs is larger or equal to the number of bits in self, the entire value is shifted out, which yields 0 for a positive number, and -1 for a negative number.

§Examples
assert_eq!(0x10_i16.unbounded_shr(4), 0x1);
assert_eq!(0x10_i16.unbounded_shr(129), 0);
assert_eq!(i16::MIN.unbounded_shr(129), -1);
assert_eq!(0b1010_i16.unbounded_shr(0), 0b1010);
assert_eq!(0b1010_i16.unbounded_shr(1), 0b101);
assert_eq!(0b1010_i16.unbounded_shr(2), 0b10);
assert_eq!(42_i16.unbounded_shr(16), 0);
assert_eq!(42_i16.unbounded_shr(1).unbounded_shr(15), 0);
assert_eq!((-13_i16).unbounded_shr(16), -1);
assert_eq!((-13_i16).unbounded_shr(1).unbounded_shr(15), -1);
Source

pub fn shr_exact(self, rhs: u32) -> Option<i16>

🔬This is a nightly-only experimental API. (exact_bitshifts)

Exact shift right. Computes self >> rhs as long as it can be reversed losslessly.

Returns None if any non-zero bits would be shifted out or if rhs >= i16::BITS. Otherwise, returns Some(self >> rhs).

§Examples
#![feature(exact_bitshifts)]

assert_eq!(0x10i16.shr_exact(4), Some(0x1));
assert_eq!(0x10i16.shr_exact(5), None);
Source

pub unsafe fn unchecked_shr_exact(self, rhs: u32) -> i16

🔬This is a nightly-only experimental API. (exact_bitshifts)

Unchecked exact shift right. Computes self >> rhs, assuming the operation can be losslessly reversed and rhs cannot be larger than i16::BITS.

§Safety

This results in undefined behavior when rhs > self.trailing_zeros() || rhs >= i16::BITS i.e. when i16::shr_exact would return None.

1.13.0 · Source

pub fn checked_abs(self) -> Option<i16>

Checked absolute value. Computes self.abs(), returning None if self == MIN.

§Examples
assert_eq!((-5i16).checked_abs(), Some(5));
assert_eq!(i16::MIN.checked_abs(), None);
1.91.0 · Source

pub fn strict_abs(self) -> i16

Strict absolute value. Computes self.abs(), panicking if self == MIN.

§Panics
§Overflow behavior

This function will always panic on overflow, regardless of whether overflow checks are enabled.

§Examples
assert_eq!((-5i16).strict_abs(), 5);

The following panics because of overflow:

ⓘ
let _ = i16::MIN.strict_abs();
1.34.0 · Source

pub fn checked_pow(self, exp: u32) -> Option<i16>

Checked exponentiation. Computes self.pow(exp), returning None if overflow occurred.

§Examples
assert_eq!(8i16.checked_pow(2), Some(64));
assert_eq!(0_i16.checked_pow(0), Some(1));
assert_eq!(i16::MAX.checked_pow(2), None);
1.91.0 · Source

pub fn strict_pow(self, exp: u32) -> i16

Strict exponentiation. Computes self.pow(exp), panicking if overflow occurred.

§Panics
§Overflow behavior

This function will always panic on overflow, regardless of whether overflow checks are enabled.

§Examples
assert_eq!(8i16.strict_pow(2), 64);
assert_eq!(0_i16.strict_pow(0), 1);

The following panics because of overflow:

ⓘ
let _ = i16::MAX.strict_pow(2);
1.84.0 · Source

pub fn checked_isqrt(self) -> Option<i16>

Returns the integer square root of the number, rounded down.

This function returns the principal (non-negative) square root. For a given number n, although both x and -x satisfy x2 = n, this function always returns the non-negative value.

Returns None if self is negative.

§Examples
assert_eq!(10i16.checked_isqrt(), Some(3));
1.0.0 · Source

pub fn saturating_add(self, rhs: i16) -> i16

Saturating integer addition. Computes self + rhs, saturating at the numeric bounds instead of overflowing.

§Examples
assert_eq!(100i16.saturating_add(1), 101);
assert_eq!(i16::MAX.saturating_add(100), i16::MAX);
assert_eq!(i16::MIN.saturating_add(-1), i16::MIN);
1.66.0 · Source

pub fn saturating_add_unsigned(self, rhs: u16) -> i16

Saturating addition with an unsigned integer. Computes self + rhs, saturating at the numeric bounds instead of overflowing.

§Examples
assert_eq!(1i16.saturating_add_unsigned(2), 3);
assert_eq!(i16::MAX.saturating_add_unsigned(100), i16::MAX);
1.0.0 · Source

pub fn saturating_sub(self, rhs: i16) -> i16

Saturating integer subtraction. Computes self - rhs, saturating at the numeric bounds instead of overflowing.

§Examples
assert_eq!(100i16.saturating_sub(127), -27);
assert_eq!(i16::MIN.saturating_sub(100), i16::MIN);
assert_eq!(i16::MAX.saturating_sub(-1), i16::MAX);
1.66.0 · Source

pub fn saturating_sub_unsigned(self, rhs: u16) -> i16

Saturating subtraction with an unsigned integer. Computes self - rhs, saturating at the numeric bounds instead of overflowing.

§Examples
assert_eq!(100i16.saturating_sub_unsigned(127), -27);
assert_eq!(i16::MIN.saturating_sub_unsigned(100), i16::MIN);
1.45.0 · Source

pub fn saturating_neg(self) -> i16

Saturating integer negation. Computes -self, returning MAX if self == MIN instead of overflowing.

§Examples
assert_eq!(100i16.saturating_neg(), -100);
assert_eq!((-100i16).saturating_neg(), 100);
assert_eq!(i16::MIN.saturating_neg(), i16::MAX);
assert_eq!(i16::MAX.saturating_neg(), i16::MIN + 1);
1.45.0 · Source

pub fn saturating_abs(self) -> i16

Saturating absolute value. Computes self.abs(), returning MAX if self == MIN instead of overflowing.

§Examples
assert_eq!(100i16.saturating_abs(), 100);
assert_eq!((-100i16).saturating_abs(), 100);
assert_eq!(i16::MIN.saturating_abs(), i16::MAX);
assert_eq!((i16::MIN + 1).saturating_abs(), i16::MAX);
1.7.0 · Source

pub fn saturating_mul(self, rhs: i16) -> i16

Saturating integer multiplication. Computes self * rhs, saturating at the numeric bounds instead of overflowing.

§Examples
assert_eq!(10i16.saturating_mul(12), 120);
assert_eq!(i16::MAX.saturating_mul(10), i16::MAX);
assert_eq!(i16::MIN.saturating_mul(10), i16::MIN);
1.58.0 · Source

pub fn saturating_div(self, rhs: i16) -> i16

Saturating integer division. Computes self / rhs, saturating at the numeric bounds instead of overflowing.

§Panics

This function will panic if rhs is zero.

§Examples
assert_eq!(5i16.saturating_div(2), 2);
assert_eq!(i16::MAX.saturating_div(-1), i16::MIN + 1);
assert_eq!(i16::MIN.saturating_div(-1), i16::MAX);
1.34.0 · Source

pub fn saturating_pow(self, exp: u32) -> i16

Saturating integer exponentiation. Computes self.pow(exp), saturating at the numeric bounds instead of overflowing.

§Examples
assert_eq!((-4i16).saturating_pow(3), -64);
assert_eq!(0_i16.saturating_pow(0), 1);
assert_eq!(i16::MIN.saturating_pow(2), i16::MAX);
assert_eq!(i16::MIN.saturating_pow(3), i16::MIN);
1.0.0 · Source

pub fn wrapping_add(self, rhs: i16) -> i16

Wrapping (modular) addition. Computes self + rhs, wrapping around at the boundary of the type.

§Examples
assert_eq!(100i16.wrapping_add(27), 127);
assert_eq!(i16::MAX.wrapping_add(2), i16::MIN + 1);
1.66.0 · Source

pub fn wrapping_add_unsigned(self, rhs: u16) -> i16

Wrapping (modular) addition with an unsigned integer. Computes self + rhs, wrapping around at the boundary of the type.

§Examples
assert_eq!(100i16.wrapping_add_unsigned(27), 127);
assert_eq!(i16::MAX.wrapping_add_unsigned(2), i16::MIN + 1);
1.0.0 · Source

pub fn wrapping_sub(self, rhs: i16) -> i16

Wrapping (modular) subtraction. Computes self - rhs, wrapping around at the boundary of the type.

§Examples
assert_eq!(0i16.wrapping_sub(127), -127);
assert_eq!((-2i16).wrapping_sub(i16::MAX), i16::MAX);
1.66.0 · Source

pub fn wrapping_sub_unsigned(self, rhs: u16) -> i16

Wrapping (modular) subtraction with an unsigned integer. Computes self - rhs, wrapping around at the boundary of the type.

§Examples
assert_eq!(0i16.wrapping_sub_unsigned(127), -127);
assert_eq!((-2i16).wrapping_sub_unsigned(u16::MAX), -1);
1.0.0 · Source

pub fn wrapping_mul(self, rhs: i16) -> i16

Wrapping (modular) multiplication. Computes self * rhs, wrapping around at the boundary of the type.

§Examples
assert_eq!(10i16.wrapping_mul(12), 120);
assert_eq!(11i8.wrapping_mul(12), -124);
1.2.0 · Source

pub fn wrapping_div(self, rhs: i16) -> i16

Wrapping (modular) division. Computes self / rhs, wrapping around at the boundary of the type.

The only case where such wrapping can occur is when one divides MIN / -1 on a signed type (where MIN is the negative minimal value for the type); this is equivalent to -MIN, a positive value that is too large to represent in the type. In such a case, this function returns MIN itself.

§Panics

This function will panic if rhs is zero.

§Examples
assert_eq!(100i16.wrapping_div(10), 10);
assert_eq!((-128i8).wrapping_div(-1), -128);
1.38.0 · Source

pub fn wrapping_div_euclid(self, rhs: i16) -> i16

Wrapping Euclidean division. Computes self.div_euclid(rhs), wrapping around at the boundary of the type.

Wrapping will only occur in MIN / -1 on a signed type (where MIN is the negative minimal value for the type). This is equivalent to -MIN, a positive value that is too large to represent in the type. In this case, this method returns MIN itself.

§Panics

This function will panic if rhs is zero.

§Examples
assert_eq!(100i16.wrapping_div_euclid(10), 10);
assert_eq!((-128i8).wrapping_div_euclid(-1), -128);
1.2.0 · Source

pub fn wrapping_rem(self, rhs: i16) -> i16

Wrapping (modular) remainder. Computes self % rhs, wrapping around at the boundary of the type.

Such wrap-around never actually occurs mathematically; implementation artifacts make x % y invalid for MIN / -1 on a signed type (where MIN is the negative minimal value). In such a case, this function returns 0.

§Panics

This function will panic if rhs is zero.

§Examples
assert_eq!(100i16.wrapping_rem(10), 0);
assert_eq!((-128i8).wrapping_rem(-1), 0);
1.38.0 · Source

pub fn wrapping_rem_euclid(self, rhs: i16) -> i16

Wrapping Euclidean remainder. Computes self.rem_euclid(rhs), wrapping around at the boundary of the type.

Wrapping will only occur in MIN % -1 on a signed type (where MIN is the negative minimal value for the type). In this case, this method returns 0.

§Panics

This function will panic if rhs is zero.

§Examples
assert_eq!(100i16.wrapping_rem_euclid(10), 0);
assert_eq!((-128i8).wrapping_rem_euclid(-1), 0);
1.2.0 · Source

pub fn wrapping_neg(self) -> i16

Wrapping (modular) negation. Computes -self, wrapping around at the boundary of the type.

The only case where such wrapping can occur is when one negates MIN on a signed type (where MIN is the negative minimal value for the type); this is a positive value that is too large to represent in the type. In such a case, this function returns MIN itself.

§Examples
assert_eq!(100i16.wrapping_neg(), -100);
assert_eq!((-100i16).wrapping_neg(), 100);
assert_eq!(i16::MIN.wrapping_neg(), i16::MIN);
1.2.0 · Source

pub fn wrapping_shl(self, rhs: u32) -> i16

Panic-free bitwise shift-left; yields self << mask(rhs), where mask removes any high-order bits of rhs that would cause the shift to exceed the bitwidth of the type.

Beware that, unlike most other wrapping_* methods on integers, this does not give the same result as doing the shift in infinite precision then truncating as needed. Instead, the behaviour of this method matches what shift instructions do on many processors, and is what the << operator does when overflow checks are disabled, but numerically it’s weird. Consider, instead, using Self::unbounded_shl which has nicer behaviour.

Note that this is not the same as a rotate-left; the RHS of a wrapping shift-left is restricted to the range of the type, rather than the bits shifted out of the LHS being returned to the other end. The primitive integer types all implement a rotate_left function, which may be what you want instead.

§Examples
assert_eq!((-1_i16).wrapping_shl(7), -128);
assert_eq!(42_i16.wrapping_shl(16), 42);
assert_eq!(42_i16.wrapping_shl(1).wrapping_shl(15), 0);
assert_eq!((-1_i16).wrapping_shl(128), -1);
assert_eq!(5_i16.wrapping_shl(1025), 10);
1.2.0 · Source

pub fn wrapping_shr(self, rhs: u32) -> i16

Panic-free bitwise shift-right; yields self >> mask(rhs), where mask removes any high-order bits of rhs that would cause the shift to exceed the bitwidth of the type.

Beware that, unlike most other wrapping_* methods on integers, this does not give the same result as doing the shift in infinite precision then truncating as needed. Instead, the behaviour of this method matches what shift instructions do on many processors, and is what the >> operator does when overflow checks are disabled, but numerically it’s weird. Consider, instead, using Self::unbounded_shr which has nicer behaviour.

Note that this is not the same as a rotate-right; the RHS of a wrapping shift-right is restricted to the range of the type, rather than the bits shifted out of the LHS being returned to the other end. The primitive integer types all implement a rotate_right function, which may be what you want instead.

§Examples
assert_eq!((-128_i16).wrapping_shr(7), -1);
assert_eq!(42_i16.wrapping_shr(16), 42);
assert_eq!(42_i16.wrapping_shr(1).wrapping_shr(15), 0);
assert_eq!((-128_i16).wrapping_shr(64), -128);
assert_eq!(10_i16.wrapping_shr(1025), 5);
1.13.0 · Source

pub fn wrapping_abs(self) -> i16

Wrapping (modular) absolute value. Computes self.abs(), wrapping around at the boundary of the type.

The only case where such wrapping can occur is when one takes the absolute value of the negative minimal value for the type; this is a positive value that is too large to represent in the type. In such a case, this function returns MIN itself.

§Examples
assert_eq!(100i16.wrapping_abs(), 100);
assert_eq!((-100i16).wrapping_abs(), 100);
assert_eq!(i16::MIN.wrapping_abs(), i16::MIN);
assert_eq!((-128i8).wrapping_abs() as u8, 128);
1.51.0 · Source

pub fn unsigned_abs(self) -> u16

Computes the absolute value of self without any wrapping or panicking.

§Examples
assert_eq!(100i16.unsigned_abs(), 100u16);
assert_eq!((-100i16).unsigned_abs(), 100u16);
assert_eq!((-128i8).unsigned_abs(), 128u8);
1.34.0 · Source

pub fn wrapping_pow(self, exp: u32) -> i16

Wrapping (modular) exponentiation. Computes self.pow(exp), wrapping around at the boundary of the type.

§Examples
assert_eq!(3i16.wrapping_pow(4), 81);
assert_eq!(3i8.wrapping_pow(5), -13);
assert_eq!(3i8.wrapping_pow(6), -39);
assert_eq!(0_i16.wrapping_pow(0), 1);
1.7.0 · Source

pub fn overflowing_add(self, rhs: i16) -> (i16, bool)

Calculates self + rhs.

Returns a tuple of the addition along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would have occurred then the wrapped value is returned (negative if overflowed above MAX, non-negative if below MIN).

§Examples
assert_eq!(5i16.overflowing_add(2), (7, false));
assert_eq!(i16::MAX.overflowing_add(1), (i16::MIN, true));
Source

pub fn carrying_add(self, rhs: i16, carry: bool) -> (i16, bool)

🔬This is a nightly-only experimental API. (signed_bigint_helpers)

Calculates self + rhs + carry and checks for overflow.

Performs “ternary addition” of two integer operands and a carry-in bit, and returns a tuple of the sum along with a boolean indicating whether an arithmetic overflow would occur. On overflow, the wrapped value is returned.

This allows chaining together multiple additions to create a wider addition, and can be useful for bignum addition. This method should only be used for the most significant word; for the less significant words the unsigned method u16::carrying_add should be used.

The output boolean returned by this method is not a carry flag, and should not be added to a more significant word.

If overflow occurred, the wrapped value is returned (negative if overflowed above MAX, non-negative if below MIN).

If the input carry is false, this method is equivalent to overflowing_add.

§Examples
#![feature(signed_bigint_helpers)]
// Only the most significant word is signed.
//
//   10  MAX    (a = 10 × 2^16 + 2^16 - 1)
// + -5    9    (b = -5 × 2^16 + 9)
// ---------
//    6    8    (sum = 6 × 2^16 + 8)

let (a1, a0): (i16, u16) = (10, u16::MAX);
let (b1, b0): (i16, u16) = (-5, 9);
let carry0 = false;

// u16::carrying_add for the less significant words
let (sum0, carry1) = a0.carrying_add(b0, carry0);
assert_eq!(carry1, true);

// i16::carrying_add for the most significant word
let (sum1, overflow) = a1.carrying_add(b1, carry1);
assert_eq!(overflow, false);

assert_eq!((sum1, sum0), (6, 8));
1.66.0 · Source

pub fn overflowing_add_unsigned(self, rhs: u16) -> (i16, bool)

Calculates self + rhs with an unsigned rhs.

Returns a tuple of the addition along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would have occurred then the wrapped value is returned.

§Examples
assert_eq!(1i16.overflowing_add_unsigned(2), (3, false));
assert_eq!((i16::MIN).overflowing_add_unsigned(u16::MAX), (i16::MAX, false));
assert_eq!((i16::MAX - 2).overflowing_add_unsigned(3), (i16::MIN, true));
1.7.0 · Source

pub fn overflowing_sub(self, rhs: i16) -> (i16, bool)

Calculates self - rhs.

Returns a tuple of the subtraction along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would have occurred then the wrapped value is returned (negative if overflowed above MAX, non-negative if below MIN).

§Examples
assert_eq!(5i16.overflowing_sub(2), (3, false));
assert_eq!(i16::MIN.overflowing_sub(1), (i16::MAX, true));
Source

pub fn borrowing_sub(self, rhs: i16, borrow: bool) -> (i16, bool)

🔬This is a nightly-only experimental API. (signed_bigint_helpers)

Calculates self − rhs − borrow and checks for overflow.

Performs “ternary subtraction” by subtracting both an integer operand and a borrow-in bit from self, and returns a tuple of the difference along with a boolean indicating whether an arithmetic overflow would occur. On overflow, the wrapped value is returned.

This allows chaining together multiple subtractions to create a wider subtraction, and can be useful for bignum subtraction. This method should only be used for the most significant word; for the less significant words the unsigned method u16::borrowing_sub should be used.

The output boolean returned by this method is not a borrow flag, and should not be subtracted from a more significant word.

If overflow occurred, the wrapped value is returned (negative if overflowed above MAX, non-negative if below MIN).

If the input borrow is false, this method is equivalent to overflowing_sub.

§Examples
#![feature(signed_bigint_helpers)]
// Only the most significant word is signed.
//
//    6    8    (a = 6 × 2^16 + 8)
// - -5    9    (b = -5 × 2^16 + 9)
// ---------
//   10  MAX    (diff = 10 × 2^16 + 2^16 - 1)

let (a1, a0): (i16, u16) = (6, 8);
let (b1, b0): (i16, u16) = (-5, 9);
let borrow0 = false;

// u16::borrowing_sub for the less significant words
let (diff0, borrow1) = a0.borrowing_sub(b0, borrow0);
assert_eq!(borrow1, true);

// i16::borrowing_sub for the most significant word
let (diff1, overflow) = a1.borrowing_sub(b1, borrow1);
assert_eq!(overflow, false);

assert_eq!((diff1, diff0), (10, u16::MAX));
1.66.0 · Source

pub fn overflowing_sub_unsigned(self, rhs: u16) -> (i16, bool)

Calculates self - rhs with an unsigned rhs.

Returns a tuple of the subtraction along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would have occurred then the wrapped value is returned.

§Examples
assert_eq!(1i16.overflowing_sub_unsigned(2), (-1, false));
assert_eq!((i16::MAX).overflowing_sub_unsigned(u16::MAX), (i16::MIN, false));
assert_eq!((i16::MIN + 2).overflowing_sub_unsigned(3), (i16::MAX, true));
1.7.0 · Source

pub fn overflowing_mul(self, rhs: i16) -> (i16, bool)

Calculates the multiplication of self and rhs.

Returns a tuple of the multiplication along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would have occurred then the wrapped value is returned.

§Examples
assert_eq!(5i16.overflowing_mul(2), (10, false));
assert_eq!(1_000_000_000i32.overflowing_mul(10), (1410065408, true));
Source

pub fn carrying_mul(self, rhs: i16, carry: i16) -> (u16, i16)

🔬This is a nightly-only experimental API. (signed_bigint_helpers)

Calculates the “full multiplication” self * rhs + carry without the possibility to overflow.

This returns the low-order (wrapping) bits and the high-order (overflow) bits of the result as two separate values, in that order.

Performs “long multiplication” which takes in an extra amount to add, and may return an additional amount of overflow. This allows for chaining together multiple multiplications to create “big integers” which represent larger values.

§Examples

Please note that this example is shared among integer types, which is why i32 is used.

#![feature(signed_bigint_helpers)]
assert_eq!(5i32.carrying_mul(-2, 0), (4294967286, -1));
assert_eq!(5i32.carrying_mul(-2, 10), (0, 0));
assert_eq!(1_000_000_000i32.carrying_mul(-10, 0), (2884901888, -3));
assert_eq!(1_000_000_000i32.carrying_mul(-10, 10), (2884901898, -3));
assert_eq!(i16::MAX.carrying_mul(i16::MAX, i16::MAX), (i16::MAX.unsigned_abs() + 1, i16::MAX / 2));
Source

pub fn carrying_mul_add(self, rhs: i16, carry: i16, add: i16) -> (u16, i16)

🔬This is a nightly-only experimental API. (signed_bigint_helpers)

Calculates the “full multiplication” self * rhs + carry + add without the possibility to overflow.

This returns the low-order (wrapping) bits and the high-order (overflow) bits of the result as two separate values, in that order.

Performs “long multiplication” which takes in an extra amount to add, and may return an additional amount of overflow. This allows for chaining together multiple multiplications to create “big integers” which represent larger values.

If you only need one carry, then you can use Self::carrying_mul instead.

§Examples

Please note that this example is shared among integer types, which is why i32 is used.

#![feature(signed_bigint_helpers)]
assert_eq!(5i32.carrying_mul_add(-2, 0, 0), (4294967286, -1));
assert_eq!(5i32.carrying_mul_add(-2, 10, 10), (10, 0));
assert_eq!(1_000_000_000i32.carrying_mul_add(-10, 0, 0), (2884901888, -3));
assert_eq!(1_000_000_000i32.carrying_mul_add(-10, 10, 10), (2884901908, -3));
assert_eq!(i16::MAX.carrying_mul_add(i16::MAX, i16::MAX, i16::MAX), (u16::MAX, i16::MAX / 2));
1.7.0 · Source

pub fn overflowing_div(self, rhs: i16) -> (i16, bool)

Calculates the divisor when self is divided by rhs.

Returns a tuple of the divisor along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would occur then self is returned.

§Panics

This function will panic if rhs is zero.

§Examples
assert_eq!(5i16.overflowing_div(2), (2, false));
assert_eq!(i16::MIN.overflowing_div(-1), (i16::MIN, true));
1.38.0 · Source

pub fn overflowing_div_euclid(self, rhs: i16) -> (i16, bool)

Calculates the quotient of Euclidean division self.div_euclid(rhs).

Returns a tuple of the divisor along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would occur then self is returned.

§Panics

This function will panic if rhs is zero.

§Examples
assert_eq!(5i16.overflowing_div_euclid(2), (2, false));
assert_eq!(i16::MIN.overflowing_div_euclid(-1), (i16::MIN, true));
1.7.0 · Source

pub fn overflowing_rem(self, rhs: i16) -> (i16, bool)

Calculates the remainder when self is divided by rhs.

Returns a tuple of the remainder after dividing along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would occur then 0 is returned.

§Panics

This function will panic if rhs is zero.

§Examples
assert_eq!(5i16.overflowing_rem(2), (1, false));
assert_eq!(i16::MIN.overflowing_rem(-1), (0, true));
1.38.0 · Source

pub fn overflowing_rem_euclid(self, rhs: i16) -> (i16, bool)

Overflowing Euclidean remainder. Calculates self.rem_euclid(rhs).

Returns a tuple of the remainder after dividing along with a boolean indicating whether an arithmetic overflow would occur. If an overflow would occur then 0 is returned.

§Panics

This function will panic if rhs is zero.

§Examples
assert_eq!(5i16.overflowing_rem_euclid(2), (1, false));
assert_eq!(i16::MIN.overflowing_rem_euclid(-1), (0, true));
1.7.0 · Source

pub fn overflowing_neg(self) -> (i16, bool)

Negates self, overflowing if this is equal to the minimum value.

Returns a tuple of the negated version of self along with a boolean indicating whether an overflow happened. If self is the minimum value (e.g., i32::MIN for values of type i32), then the minimum value will be returned again and true will be returned for an overflow happening.

§Examples
assert_eq!(2i16.overflowing_neg(), (-2, false));
assert_eq!(i16::MIN.overflowing_neg(), (i16::MIN, true));
1.7.0 · Source

pub fn overflowing_shl(self, rhs: u32) -> (i16, bool)

Shifts self left by rhs bits.

Returns a tuple of the shifted version of self along with a boolean indicating whether the shift value was larger than or equal to the number of bits. If the shift value is too large, then value is masked (N-1) where N is the number of bits, and this value is then used to perform the shift.

§Examples
assert_eq!(0x1i16.overflowing_shl(4), (0x10, false));
assert_eq!(0x1i32.overflowing_shl(36), (0x10, true));
assert_eq!(0x10i16.overflowing_shl(15), (0, false));
1.7.0 · Source

pub fn overflowing_shr(self, rhs: u32) -> (i16, bool)

Shifts self right by rhs bits.

Returns a tuple of the shifted version of self along with a boolean indicating whether the shift value was larger than or equal to the number of bits. If the shift value is too large, then value is masked (N-1) where N is the number of bits, and this value is then used to perform the shift.

§Examples
assert_eq!(0x10i16.overflowing_shr(4), (0x1, false));
assert_eq!(0x10i32.overflowing_shr(36), (0x1, true));
1.13.0 · Source

pub fn overflowing_abs(self) -> (i16, bool)

Computes the absolute value of self.

Returns a tuple of the absolute version of self along with a boolean indicating whether an overflow happened. If self is the minimum value (e.g., i16::MIN for values of type i16), then the minimum value will be returned again and true will be returned for an overflow happening.

§Examples
assert_eq!(10i16.overflowing_abs(), (10, false));
assert_eq!((-10i16).overflowing_abs(), (10, false));
assert_eq!((i16::MIN).overflowing_abs(), (i16::MIN, true));
1.34.0 · Source

pub fn overflowing_pow(self, exp: u32) -> (i16, bool)

Raises self to the power of exp, using exponentiation by squaring.

Returns a tuple of the exponentiation along with a bool indicating whether an overflow happened.

§Examples
assert_eq!(3i16.overflowing_pow(4), (81, false));
assert_eq!(0_i16.overflowing_pow(0), (1, false));
assert_eq!(3i8.overflowing_pow(5), (-13, true));
1.0.0 · Source

pub fn pow(self, exp: u32) -> i16

Raises self to the power of exp, using exponentiation by squaring.

§Examples
let x: i16 = 2; // or any other integer type

assert_eq!(x.pow(5), 32);
assert_eq!(0_i16.pow(0), 1);
1.84.0 · Source

pub fn isqrt(self) -> i16

Returns the integer square root of the number, rounded down.

This function returns the principal (non-negative) square root. For a given number n, although both x and -x satisfy x2 = n, this function always returns the non-negative value.

§Panics

This function will panic if self is negative.

§Examples
assert_eq!(10i16.isqrt(), 3);
1.38.0 · Source

pub fn div_euclid(self, rhs: i16) -> i16

Calculates the quotient of Euclidean division of self by rhs.

This computes the integer q such that self = q * rhs + r, with r = self.rem_euclid(rhs) and 0 <= r < abs(rhs).

In other words, the result is self / rhs rounded to the integer q such that self >= q * rhs. If self > 0, this is equal to rounding towards zero (the default in Rust); if self < 0, this is equal to rounding away from zero (towards +/- infinity). If rhs > 0, this is equal to rounding towards -infinity; if rhs < 0, this is equal to rounding towards +infinity.

§Panics

This function will panic if rhs is zero or if self is Self::MIN and rhs is -1. This behavior is not affected by the overflow-checks flag.

§Examples
let a: i16 = 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
1.38.0 · Source

pub fn rem_euclid(self, rhs: i16) -> i16

Calculates the least nonnegative remainder of self when divided by rhs.

This is done as if by the Euclidean division algorithm – given r = self.rem_euclid(rhs), the result satisfies self = rhs * self.div_euclid(rhs) + r and 0 <= r < abs(rhs).

§Panics

This function will panic if rhs is zero or if self is Self::MIN and rhs is -1. This behavior is not affected by the overflow-checks flag.

§Examples
let a: i16 = 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);

This will panic:

ⓘ
let _ = i16::MIN.rem_euclid(-1);
Source

pub fn div_floor(self, rhs: i16) -> i16

🔬This is a nightly-only experimental API. (int_roundings)

Calculates the quotient of self and rhs, rounding the result towards negative infinity.

§Panics

This function will panic if rhs is zero or if self is Self::MIN and rhs is -1. This behavior is not affected by the overflow-checks flag.

§Examples
#![feature(int_roundings)]
let a: i16 = 8;
let b = 3;

assert_eq!(a.div_floor(b), 2);
assert_eq!(a.div_floor(-b), -3);
assert_eq!((-a).div_floor(b), -3);
assert_eq!((-a).div_floor(-b), 2);
Source

pub fn div_ceil(self, rhs: i16) -> i16

🔬This is a nightly-only experimental API. (int_roundings)

Calculates the quotient of self and rhs, rounding the result towards positive infinity.

§Panics

This function will panic if rhs is zero or if self is Self::MIN and rhs is -1. This behavior is not affected by the overflow-checks flag.

§Examples
#![feature(int_roundings)]
let a: i16 = 8;
let b = 3;

assert_eq!(a.div_ceil(b), 3);
assert_eq!(a.div_ceil(-b), -2);
assert_eq!((-a).div_ceil(b), -2);
assert_eq!((-a).div_ceil(-b), 3);
Source

pub fn next_multiple_of(self, rhs: i16) -> i16

🔬This is a nightly-only experimental API. (int_roundings)

If rhs is positive, calculates the smallest value greater than or equal to self that is a multiple of rhs. If rhs is negative, calculates the largest value less than or equal to self that is a multiple of rhs.

§Panics

This function will panic if rhs is zero.

§Overflow behavior

On overflow, this function will panic if overflow checks are enabled (default in debug mode) and wrap if overflow checks are disabled (default in release mode).

§Examples
#![feature(int_roundings)]
assert_eq!(16_i16.next_multiple_of(8), 16);
assert_eq!(23_i16.next_multiple_of(8), 24);
assert_eq!(16_i16.next_multiple_of(-8), 16);
assert_eq!(23_i16.next_multiple_of(-8), 16);
assert_eq!((-16_i16).next_multiple_of(8), -16);
assert_eq!((-23_i16).next_multiple_of(8), -16);
assert_eq!((-16_i16).next_multiple_of(-8), -16);
assert_eq!((-23_i16).next_multiple_of(-8), -24);
Source

pub fn checked_next_multiple_of(self, rhs: i16) -> Option<i16>

🔬This is a nightly-only experimental API. (int_roundings)

If rhs is positive, calculates the smallest value greater than or equal to self that is a multiple of rhs. If rhs is negative, calculates the largest value less than or equal to self that is a multiple of rhs. Returns None if rhs is zero or the operation would result in overflow.

§Examples
#![feature(int_roundings)]
assert_eq!(16_i16.checked_next_multiple_of(8), Some(16));
assert_eq!(23_i16.checked_next_multiple_of(8), Some(24));
assert_eq!(16_i16.checked_next_multiple_of(-8), Some(16));
assert_eq!(23_i16.checked_next_multiple_of(-8), Some(16));
assert_eq!((-16_i16).checked_next_multiple_of(8), Some(-16));
assert_eq!((-23_i16).checked_next_multiple_of(8), Some(-16));
assert_eq!((-16_i16).checked_next_multiple_of(-8), Some(-16));
assert_eq!((-23_i16).checked_next_multiple_of(-8), Some(-24));
assert_eq!(1_i16.checked_next_multiple_of(0), None);
assert_eq!(i16::MAX.checked_next_multiple_of(2), None);
1.67.0 · Source

pub fn ilog(self, base: i16) -> u32

Returns the logarithm of the number with respect to an arbitrary base, rounded down.

This method might not be optimized owing to implementation details; ilog2 can produce results more efficiently for base 2, and ilog10 can produce results more efficiently for base 10.

§Panics

This function will panic if self is less than or equal to zero, or if base is less than 2.

§Examples
assert_eq!(5i16.ilog(5), 1);
1.67.0 · Source

pub fn ilog2(self) -> u32

Returns the base 2 logarithm of the number, rounded down.

§Panics

This function will panic if self is less than or equal to zero.

§Examples
assert_eq!(2i16.ilog2(), 1);
1.67.0 · Source

pub fn ilog10(self) -> u32

Returns the base 10 logarithm of the number, rounded down.

§Panics

This function will panic if self is less than or equal to zero.

§Example
assert_eq!(10i16.ilog10(), 1);
1.67.0 · Source

pub fn checked_ilog(self, base: i16) -> Option<u32>

Returns the logarithm of the number with respect to an arbitrary base, rounded down.

Returns None if the number is negative or zero, or if the base is not at least 2.

This method might not be optimized owing to implementation details; checked_ilog2 can produce results more efficiently for base 2, and checked_ilog10 can produce results more efficiently for base 10.

§Examples
assert_eq!(5i16.checked_ilog(5), Some(1));
1.67.0 · Source

pub fn checked_ilog2(self) -> Option<u32>

Returns the base 2 logarithm of the number, rounded down.

Returns None if the number is negative or zero.

Note that for non-negative numbers, this is equivalent to highest_one.

§Examples
assert_eq!(2i16.checked_ilog2(), Some(1));
1.67.0 · Source

pub fn checked_ilog10(self) -> Option<u32>

Returns the base 10 logarithm of the number, rounded down.

Returns None if the number is negative or zero.

§Example
assert_eq!(10i16.checked_ilog10(), Some(1));
1.0.0 · Source

pub fn abs(self) -> i16

Computes the absolute value of self.

§Overflow behavior

The absolute value of i16::MIN cannot be represented as an i16, and attempting to calculate it will cause an overflow. This means that code in debug mode will trigger a panic on this case and optimized code will return i16::MIN without a panic. If you do not want this behavior, consider using unsigned_abs instead.

§Examples
assert_eq!(10i16.abs(), 10);
assert_eq!((-10i16).abs(), 10);
1.60.0 · Source

pub fn abs_diff(self, other: i16) -> u16

Computes the absolute difference between self and other.

This function always returns the correct answer without overflow or panics by returning an unsigned integer.

§Examples
assert_eq!(100i16.abs_diff(80), 20u16);
assert_eq!(100i16.abs_diff(110), 10u16);
assert_eq!((-100i16).abs_diff(80), 180u16);
assert_eq!((-100i16).abs_diff(-120), 20u16);
assert_eq!(i16::MIN.abs_diff(i16::MAX), u16::MAX);
1.0.0 · Source

pub fn signum(self) -> i16

Returns a number representing sign of self.

  • 0 if the number is zero
  • 1 if the number is positive
  • -1 if the number is negative
§Examples
assert_eq!(10i16.signum(), 1);
assert_eq!(0i16.signum(), 0);
assert_eq!((-10i16).signum(), -1);
1.0.0 · Source

pub fn is_positive(self) -> bool

Returns true if self is positive and false if the number is zero or negative.

§Examples
assert!(10i16.is_positive());
assert!(!(-10i16).is_positive());
1.0.0 · Source

pub fn is_negative(self) -> bool

Returns true if self is negative and false if the number is zero or positive.

§Examples
assert!((-10i16).is_negative());
assert!(!10i16.is_negative());
1.32.0 · Source

pub fn to_be_bytes(self) -> [u8; 2]

Returns the memory representation of this integer as a byte array in big-endian (network) byte order.

§Examples
let bytes = 0x1234i16.to_be_bytes();
assert_eq!(bytes, [0x12, 0x34]);
1.32.0 · Source

pub fn to_le_bytes(self) -> [u8; 2]

Returns the memory representation of this integer as a byte array in little-endian byte order.

§Examples
let bytes = 0x1234i16.to_le_bytes();
assert_eq!(bytes, [0x34, 0x12]);
1.32.0 · Source

pub fn to_ne_bytes(self) -> [u8; 2]

Returns the memory representation of this integer as a byte array in native byte order.

As the target platform’s native endianness is used, portable code should use to_be_bytes or to_le_bytes, as appropriate, instead.

§Examples
let bytes = 0x1234i16.to_ne_bytes();
assert_eq!(
    bytes,
    if cfg!(target_endian = "big") {
        [0x12, 0x34]
    } else {
        [0x34, 0x12]
    }
);
Source

pub fn clamp_magnitude(self, limit: u16) -> i16

🔬This is a nightly-only experimental API. (clamp_magnitude)

Clamps this number to a symmetric range centred around zero.

The method clamps the number’s magnitude (absolute value) to be at most limit.

This is functionally equivalent to self.clamp(-limit, limit), but is more explicit about the intent.

§Examples
#![feature(clamp_magnitude)]
assert_eq!(120i16.clamp_magnitude(100), 100);
assert_eq!((-120i16).clamp_magnitude(100), -100);
assert_eq!(80i16.clamp_magnitude(100), 80);
assert_eq!((-80i16).clamp_magnitude(100), -80);
Source

pub fn truncate<Target>(self) -> Target
where i16: TruncateTarget<Target>,

🔬This is a nightly-only experimental API. (integer_widen_truncate)

Truncate an integer to an integer of the same size or smaller, preserving the least significant bits.

§Examples
#![feature(integer_widen_truncate)]
assert_eq!(120i8, 120i16.truncate());
assert_eq!(-120i8, (-120i16).truncate());
assert_eq!(120i8, 376i32.truncate());
Source

pub fn saturating_truncate<Target>(self) -> Target
where i16: TruncateTarget<Target>,

🔬This is a nightly-only experimental API. (integer_widen_truncate)

Truncate an integer to an integer of the same size or smaller, saturating at numeric bounds instead of truncating.

§Examples
#![feature(integer_widen_truncate)]
assert_eq!(120i8, 120i16.saturating_truncate());
assert_eq!(-120i8, (-120i16).saturating_truncate());
assert_eq!(127i8, 376i32.saturating_truncate());
assert_eq!(-128i8, (-1000i32).saturating_truncate());
Source

pub fn checked_truncate<Target>(self) -> Option<Target>
where i16: TruncateTarget<Target>,

🔬This is a nightly-only experimental API. (integer_widen_truncate)

Truncate an integer to an integer of the same size or smaller, returning None if the value is outside the bounds of the smaller type.

§Examples
#![feature(integer_widen_truncate)]
assert_eq!(Some(120i8), 120i16.checked_truncate());
assert_eq!(Some(-120i8), (-120i16).checked_truncate());
assert_eq!(None, 376i32.checked_truncate::<i8>());
assert_eq!(None, (-1000i32).checked_truncate::<i8>());
Source

pub fn widen<Target>(self) -> Target
where i16: WidenTarget<Target>,

🔬This is a nightly-only experimental API. (integer_widen_truncate)

Widen to an integer of the same size or larger, preserving its value.

§Examples
#![feature(integer_widen_truncate)]
assert_eq!(120i128, 120i8.widen());
assert_eq!(-120i128, (-120i8).widen());
Source

pub fn saturating_cast<T>(self) -> T

🔬This is a nightly-only experimental API. (integer_casts)

Converts self to the target integer type, saturating at the numeric bounds instead of overflowing.

§Examples
#![feature(integer_casts)]
assert_eq!(i8::MAX, i16::MAX.saturating_cast());
assert_eq!(i8::MIN, i16::MIN.saturating_cast());
assert_eq!(42u8, 42i16.saturating_cast());
assert_eq!(0u8, (-42i16).saturating_cast());
Source

pub fn wrapping_cast<T>(self) -> T

🔬This is a nightly-only experimental API. (integer_casts)

Converts self to the target integer type, wrapping around at the boundary of the target type.

§Examples
#![feature(integer_casts)]
assert_eq!(i16::MAX as i8, i16::MAX.wrapping_cast());
assert_eq!(i16::MIN as i8, i16::MIN.wrapping_cast());
assert_eq!(42u8, 42i16.wrapping_cast());
assert_eq!(u8::MAX - 41, (-42i16).wrapping_cast());
Source

pub fn checked_cast<T>(self) -> Option<T>

🔬This is a nightly-only experimental API. (integer_casts)

Converts self to the target integer type, returning None if the value is not representable by the target type.

§Examples
#![feature(integer_casts)]
assert_eq!(Some(42u8), 42i16.checked_cast());
assert_eq!((-42i16).checked_cast::<u8>(), None);
Source

pub fn strict_cast<T>(self) -> T

🔬This is a nightly-only experimental API. (integer_casts)

Converts self to the target integer type, panicking if the value is not representable by the target type.

§Panics

This function will panic if the value is not representable by the target type.

§Examples
#![feature(integer_casts)]
assert_eq!(42u8, 42i16.strict_cast());

The following will panic:

ⓘ
#![feature(integer_casts)]
let _ = (-42i16).strict_cast::<u8>();
Source

pub unsafe fn unchecked_cast<T>(self) -> T

🔬This is a nightly-only experimental API. (integer_casts)

Converts self to the target integer type, assuming the value is representable by the target type.

§Safety

This results in undefined behavior if the integer value of self is bigger than T::MAX, or smaller than T::MIN, where T is the target type.

1.87.0 · Source

pub fn midpoint(self, rhs: i16) -> i16

Calculates the midpoint (average) between self and rhs.

midpoint(a, b) is (a + b) / 2 as if it were performed in a sufficiently-large signed integral type. This implies that the result is always rounded towards zero and that no overflow will ever occur.

§Examples
assert_eq!(0i16.midpoint(4), 2);
assert_eq!((-1i16).midpoint(2), 0);
assert_eq!((-7i16).midpoint(0), -3);
assert_eq!(0i16.midpoint(-7), -3);
assert_eq!(0i16.midpoint(7), 3);
Source

pub fn widening_mul(self, rhs: i16) -> i32

🔬This is a nightly-only experimental API. (widening_mul)

Widening multiplication. Computes self * rhs, widening to a larger integer.

The returned value is always exact and can never overflow.

Note that this method is semantically equivalent to carrying_mul with a carry of zero, with the latter instead returning a tuple denoting the low and high parts of the result. Consider using it instead if you need interoperability with other big int helper functions, or if this method isn’t available for a given type.

§Examples
#![feature(widening_mul)]

assert_eq!(i16::MAX.widening_mul(0_i16), 0);
assert_eq!(i16::MAX.widening_mul(i16::MAX), i16::MAX as i32 * i16::MAX as i32);
1.98.0 · Source

pub fn format_into(self, buf: &mut NumBuffer<i16>) -> &str

Formats this integer as a signed decimal number, using the memory pointed to by buf as storage for the returned string slice.

This method can be used to convert integers to strings without involving the dynamic dispatch that using Display would. This may be more efficient in situations where fmt is not otherwise used.

§Examples
use core::fmt::NumBuffer;

let n = 0i16;
let mut buf = NumBuffer::new();
assert_eq!(n.format_into(&mut buf), "0");

let n1 = 32i16;
assert_eq!(n1.format_into(&mut buf), "32");

let n2 = i16::MAX;
assert_eq!(n2.format_into(&mut buf), i16::MAX.to_string());

Trait Implementations§

Source§

impl Add for Int16

Source§

type Output = i16

The resulting type after applying the + operator.
Source§

fn add(self, other: Int16) -> Self::Output

Performs the + operation. Read more
Source§

impl Add<&Int16> for i16

Source§

type Output = i16

The resulting type after applying the + operator.
Source§

fn add(self, other: &Int16) -> Self::Output

Performs the + operation. Read more
Source§

impl Add<&Int16> for &i16

Source§

type Output = i16

The resulting type after applying the + operator.
Source§

fn add(self, other: &Int16) -> Self::Output

Performs the + operation. Read more
Source§

impl Add<&Int16> for Int16

Source§

type Output = i16

The resulting type after applying the + operator.
Source§

fn add(self, other: &Int16) -> Self::Output

Performs the + operation. Read more
Source§

impl Add<&Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the + operator.
Source§

fn add(self, other: &Int16) -> Self::Output

Performs the + operation. Read more
Source§

impl Add<&i16> for Int16

Source§

type Output = i16

The resulting type after applying the + operator.
Source§

fn add(self, other: &i16) -> Self::Output

Performs the + operation. Read more
Source§

impl Add<&i16> for &Int16

Source§

type Output = i16

The resulting type after applying the + operator.
Source§

fn add(self, other: &i16) -> Self::Output

Performs the + operation. Read more
Source§

impl Add<Int16> for i16

Source§

type Output = i16

The resulting type after applying the + operator.
Source§

fn add(self, other: Int16) -> Self::Output

Performs the + operation. Read more
Source§

impl Add<Int16> for &i16

Source§

type Output = i16

The resulting type after applying the + operator.
Source§

fn add(self, other: Int16) -> Self::Output

Performs the + operation. Read more
Source§

impl Add<Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the + operator.
Source§

fn add(self, other: Int16) -> Self::Output

Performs the + operation. Read more
Source§

impl Add<i16> for Int16

Source§

type Output = i16

The resulting type after applying the + operator.
Source§

fn add(self, other: i16) -> Self::Output

Performs the + operation. Read more
Source§

impl Add<i16> for &Int16

Source§

type Output = i16

The resulting type after applying the + operator.
Source§

fn add(self, other: i16) -> Self::Output

Performs the + operation. Read more
Source§

impl AddAssign for Int16

Source§

fn add_assign(&mut self, other: Int16)

Performs the += operation. Read more
Source§

impl AddAssign<&Int16> for Int16

Source§

fn add_assign(&mut self, other: &Int16)

Performs the += operation. Read more
Source§

impl AddAssign<&i16> for Int16

Source§

fn add_assign(&mut self, other: &i16)

Performs the += operation. Read more
Source§

impl AddAssign<i16> for Int16

Source§

fn add_assign(&mut self, other: i16)

Performs the += operation. Read more
Source§

impl Binary for Int16

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl BitAnd for Int16

Source§

type Output = i16

The resulting type after applying the & operator.
Source§

fn bitand(self, other: Int16) -> Self::Output

Performs the & operation. Read more
Source§

impl BitAnd<&Int16> for i16

Source§

type Output = i16

The resulting type after applying the & operator.
Source§

fn bitand(self, other: &Int16) -> Self::Output

Performs the & operation. Read more
Source§

impl BitAnd<&Int16> for &i16

Source§

type Output = i16

The resulting type after applying the & operator.
Source§

fn bitand(self, other: &Int16) -> Self::Output

Performs the & operation. Read more
Source§

impl BitAnd<&Int16> for Int16

Source§

type Output = i16

The resulting type after applying the & operator.
Source§

fn bitand(self, other: &Int16) -> Self::Output

Performs the & operation. Read more
Source§

impl BitAnd<&Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the & operator.
Source§

fn bitand(self, other: &Int16) -> Self::Output

Performs the & operation. Read more
Source§

impl BitAnd<&i16> for Int16

Source§

type Output = i16

The resulting type after applying the & operator.
Source§

fn bitand(self, other: &i16) -> Self::Output

Performs the & operation. Read more
Source§

impl BitAnd<&i16> for &Int16

Source§

type Output = i16

The resulting type after applying the & operator.
Source§

fn bitand(self, other: &i16) -> Self::Output

Performs the & operation. Read more
Source§

impl BitAnd<Int16> for i16

Source§

type Output = i16

The resulting type after applying the & operator.
Source§

fn bitand(self, other: Int16) -> Self::Output

Performs the & operation. Read more
Source§

impl BitAnd<Int16> for &i16

Source§

type Output = i16

The resulting type after applying the & operator.
Source§

fn bitand(self, other: Int16) -> Self::Output

Performs the & operation. Read more
Source§

impl BitAnd<Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the & operator.
Source§

fn bitand(self, other: Int16) -> Self::Output

Performs the & operation. Read more
Source§

impl BitAnd<i16> for Int16

Source§

type Output = i16

The resulting type after applying the & operator.
Source§

fn bitand(self, other: i16) -> Self::Output

Performs the & operation. Read more
Source§

impl BitAnd<i16> for &Int16

Source§

type Output = i16

The resulting type after applying the & operator.
Source§

fn bitand(self, other: i16) -> Self::Output

Performs the & operation. Read more
Source§

impl BitAndAssign for Int16

Source§

fn bitand_assign(&mut self, other: Int16)

Performs the &= operation. Read more
Source§

impl BitAndAssign<&Int16> for Int16

Source§

fn bitand_assign(&mut self, other: &Int16)

Performs the &= operation. Read more
Source§

impl BitAndAssign<&i16> for Int16

Source§

fn bitand_assign(&mut self, other: &i16)

Performs the &= operation. Read more
Source§

impl BitAndAssign<i16> for Int16

Source§

fn bitand_assign(&mut self, other: i16)

Performs the &= operation. Read more
Source§

impl BitOr for Int16

Source§

type Output = i16

The resulting type after applying the | operator.
Source§

fn bitor(self, other: Int16) -> Self::Output

Performs the | operation. Read more
Source§

impl BitOr<&Int16> for i16

Source§

type Output = i16

The resulting type after applying the | operator.
Source§

fn bitor(self, other: &Int16) -> Self::Output

Performs the | operation. Read more
Source§

impl BitOr<&Int16> for &i16

Source§

type Output = i16

The resulting type after applying the | operator.
Source§

fn bitor(self, other: &Int16) -> Self::Output

Performs the | operation. Read more
Source§

impl BitOr<&Int16> for Int16

Source§

type Output = i16

The resulting type after applying the | operator.
Source§

fn bitor(self, other: &Int16) -> Self::Output

Performs the | operation. Read more
Source§

impl BitOr<&Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the | operator.
Source§

fn bitor(self, other: &Int16) -> Self::Output

Performs the | operation. Read more
Source§

impl BitOr<&i16> for Int16

Source§

type Output = i16

The resulting type after applying the | operator.
Source§

fn bitor(self, other: &i16) -> Self::Output

Performs the | operation. Read more
Source§

impl BitOr<&i16> for &Int16

Source§

type Output = i16

The resulting type after applying the | operator.
Source§

fn bitor(self, other: &i16) -> Self::Output

Performs the | operation. Read more
Source§

impl BitOr<Int16> for i16

Source§

type Output = i16

The resulting type after applying the | operator.
Source§

fn bitor(self, other: Int16) -> Self::Output

Performs the | operation. Read more
Source§

impl BitOr<Int16> for &i16

Source§

type Output = i16

The resulting type after applying the | operator.
Source§

fn bitor(self, other: Int16) -> Self::Output

Performs the | operation. Read more
Source§

impl BitOr<Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the | operator.
Source§

fn bitor(self, other: Int16) -> Self::Output

Performs the | operation. Read more
Source§

impl BitOr<i16> for Int16

Source§

type Output = i16

The resulting type after applying the | operator.
Source§

fn bitor(self, other: i16) -> Self::Output

Performs the | operation. Read more
Source§

impl BitOr<i16> for &Int16

Source§

type Output = i16

The resulting type after applying the | operator.
Source§

fn bitor(self, other: i16) -> Self::Output

Performs the | operation. Read more
Source§

impl BitOrAssign for Int16

Source§

fn bitor_assign(&mut self, other: Int16)

Performs the |= operation. Read more
Source§

impl BitOrAssign<&Int16> for Int16

Source§

fn bitor_assign(&mut self, other: &Int16)

Performs the |= operation. Read more
Source§

impl BitOrAssign<&i16> for Int16

Source§

fn bitor_assign(&mut self, other: &i16)

Performs the |= operation. Read more
Source§

impl BitOrAssign<i16> for Int16

Source§

fn bitor_assign(&mut self, other: i16)

Performs the |= operation. Read more
Source§

impl BitXor for Int16

Source§

type Output = i16

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, other: Int16) -> Self::Output

Performs the ^ operation. Read more
Source§

impl BitXor<&Int16> for i16

Source§

type Output = i16

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, other: &Int16) -> Self::Output

Performs the ^ operation. Read more
Source§

impl BitXor<&Int16> for &i16

Source§

type Output = i16

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, other: &Int16) -> Self::Output

Performs the ^ operation. Read more
Source§

impl BitXor<&Int16> for Int16

Source§

type Output = i16

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, other: &Int16) -> Self::Output

Performs the ^ operation. Read more
Source§

impl BitXor<&Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, other: &Int16) -> Self::Output

Performs the ^ operation. Read more
Source§

impl BitXor<&i16> for Int16

Source§

type Output = i16

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, other: &i16) -> Self::Output

Performs the ^ operation. Read more
Source§

impl BitXor<&i16> for &Int16

Source§

type Output = i16

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, other: &i16) -> Self::Output

Performs the ^ operation. Read more
Source§

impl BitXor<Int16> for i16

Source§

type Output = i16

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, other: Int16) -> Self::Output

Performs the ^ operation. Read more
Source§

impl BitXor<Int16> for &i16

Source§

type Output = i16

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, other: Int16) -> Self::Output

Performs the ^ operation. Read more
Source§

impl BitXor<Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, other: Int16) -> Self::Output

Performs the ^ operation. Read more
Source§

impl BitXor<i16> for Int16

Source§

type Output = i16

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, other: i16) -> Self::Output

Performs the ^ operation. Read more
Source§

impl BitXor<i16> for &Int16

Source§

type Output = i16

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, other: i16) -> Self::Output

Performs the ^ operation. Read more
Source§

impl BitXorAssign for Int16

Source§

fn bitxor_assign(&mut self, other: Int16)

Performs the ^= operation. Read more
Source§

impl BitXorAssign<&Int16> for Int16

Source§

fn bitxor_assign(&mut self, other: &Int16)

Performs the ^= operation. Read more
Source§

impl BitXorAssign<&i16> for Int16

Source§

fn bitxor_assign(&mut self, other: &i16)

Performs the ^= operation. Read more
Source§

impl BitXorAssign<i16> for Int16

Source§

fn bitxor_assign(&mut self, other: i16)

Performs the ^= operation. Read more
Source§

impl Clone for Int16

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Constrained for Int16

Source§

type Constraint = ()

Type of constraint information for this type.
Source§

fn validate( _: Slot<'_, Self>, _: Self::Constraint, ) -> Result<(), ValidationError>

Validate a slot of this type against a constraint. Can be called when pointers/envelopes are just presence markers.
Source§

impl Copy for Int16

Source§

impl Debug for Int16

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<D: ?Sized> Decode<D> for Int16

Source§

fn decode(_: Slot<'_, Self>, _: &mut D, _: ()) -> Result<(), DecodeError>

Decodes a value into a slot using a decoder. Read more
Source§

impl Default for Int16

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Deref for Int16

Source§

type Target = i16

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl DerefMut for Int16

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl Display for Int16

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Div for Int16

Source§

type Output = i16

The resulting type after applying the / operator.
Source§

fn div(self, other: Int16) -> Self::Output

Performs the / operation. Read more
Source§

impl Div<&Int16> for i16

Source§

type Output = i16

The resulting type after applying the / operator.
Source§

fn div(self, other: &Int16) -> Self::Output

Performs the / operation. Read more
Source§

impl Div<&Int16> for &i16

Source§

type Output = i16

The resulting type after applying the / operator.
Source§

fn div(self, other: &Int16) -> Self::Output

Performs the / operation. Read more
Source§

impl Div<&Int16> for Int16

Source§

type Output = i16

The resulting type after applying the / operator.
Source§

fn div(self, other: &Int16) -> Self::Output

Performs the / operation. Read more
Source§

impl Div<&Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the / operator.
Source§

fn div(self, other: &Int16) -> Self::Output

Performs the / operation. Read more
Source§

impl Div<&i16> for Int16

Source§

type Output = i16

The resulting type after applying the / operator.
Source§

fn div(self, other: &i16) -> Self::Output

Performs the / operation. Read more
Source§

impl Div<&i16> for &Int16

Source§

type Output = i16

The resulting type after applying the / operator.
Source§

fn div(self, other: &i16) -> Self::Output

Performs the / operation. Read more
Source§

impl Div<Int16> for i16

Source§

type Output = i16

The resulting type after applying the / operator.
Source§

fn div(self, other: Int16) -> Self::Output

Performs the / operation. Read more
Source§

impl Div<Int16> for &i16

Source§

type Output = i16

The resulting type after applying the / operator.
Source§

fn div(self, other: Int16) -> Self::Output

Performs the / operation. Read more
Source§

impl Div<Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the / operator.
Source§

fn div(self, other: Int16) -> Self::Output

Performs the / operation. Read more
Source§

impl Div<i16> for Int16

Source§

type Output = i16

The resulting type after applying the / operator.
Source§

fn div(self, other: i16) -> Self::Output

Performs the / operation. Read more
Source§

impl Div<i16> for &Int16

Source§

type Output = i16

The resulting type after applying the / operator.
Source§

fn div(self, other: i16) -> Self::Output

Performs the / operation. Read more
Source§

impl DivAssign for Int16

Source§

fn div_assign(&mut self, other: Int16)

Performs the /= operation. Read more
Source§

impl DivAssign<&Int16> for Int16

Source§

fn div_assign(&mut self, other: &Int16)

Performs the /= operation. Read more
Source§

impl DivAssign<&i16> for Int16

Source§

fn div_assign(&mut self, other: &i16)

Performs the /= operation. Read more
Source§

impl DivAssign<i16> for Int16

Source§

fn div_assign(&mut self, other: i16)

Performs the /= operation. Read more
Source§

impl<E: ?Sized> Encode<Int16, E> for i16

Source§

const COPY_OPTIMIZATION: CopyOptimization<i16, Int16> = crate::CopyOptimization<i16, Int16>::PRIMITIVE

Whether the conversion from Self to W is equivalent to copying the raw bytes of Self. Read more
Source§

fn encode( self, encoder: &mut E, out: &mut MaybeUninit<Int16>, constraint: <Int16 as Constrained>::Constraint, ) -> Result<(), EncodeError>

Encodes this value into an encoder and output.
Source§

impl<E: ?Sized> Encode<Int16, E> for &i16

Source§

fn encode( self, _: &mut E, out: &mut MaybeUninit<Int16>, _: <Int16 as Constrained>::Constraint, ) -> Result<(), EncodeError>

Encodes this value into an encoder and output.
Source§

const COPY_OPTIMIZATION: CopyOptimization<Self, W> = _

Whether the conversion from Self to W is equivalent to copying the raw bytes of Self. Read more
Source§

impl<E: ?Sized> Encode<Int16, E> for Int16

Source§

const COPY_OPTIMIZATION: CopyOptimization<Int16, Int16> = crate::CopyOptimization<Int16, Int16>::PRIMITIVE

Whether the conversion from Self to W is equivalent to copying the raw bytes of Self. Read more
Source§

fn encode( self, encoder: &mut E, out: &mut MaybeUninit<Int16>, constraint: <Int16 as Constrained>::Constraint, ) -> Result<(), EncodeError>

Encodes this value into an encoder and output.
Source§

impl<E: ?Sized> Encode<Int16, E> for &Int16

Source§

fn encode( self, _: &mut E, out: &mut MaybeUninit<Int16>, _: <Int16 as Constrained>::Constraint, ) -> Result<(), EncodeError>

Encodes this value into an encoder and output.
Source§

const COPY_OPTIMIZATION: CopyOptimization<Self, W> = _

Whether the conversion from Self to W is equivalent to copying the raw bytes of Self. Read more
Source§

impl<E> EncodeOption<Box<'static, Int16>, E> for Int16
where E: Encoder + ?Sized,

Source§

fn encode_option( this: Option<Self>, encoder: &mut E, out: &mut MaybeUninit<Box<'static, Int16>>, constraint: <Int16 as Constrained>::Constraint, ) -> Result<(), EncodeError>

Encodes this optional value into an encoder and output.
Source§

impl<E> EncodeOption<Box<'static, Int16>, E> for &Int16
where E: Encoder + ?Sized,

Source§

fn encode_option( this: Option<Self>, encoder: &mut E, out: &mut MaybeUninit<Box<'static, Int16>>, constraint: <Int16 as Constrained>::Constraint, ) -> Result<(), EncodeError>

Encodes this optional value into an encoder and output.
Source§

impl Eq for Int16

Source§

impl<'a> From<&'a Int16> for i16

Source§

fn from(value: &'a Int16) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<&'a i16> for Int16

Source§

fn from(value: &'a i16) -> Self

Converts to this type from the input type.
Source§

impl From<Int16> for i16

Source§

fn from(value: Int16) -> Self

Converts to this type from the input type.
Source§

impl From<Int16> for isize

Source§

fn from(value: Int16) -> Self

Converts to this type from the input type.
Source§

impl From<i16> for Int16

Source§

fn from(value: i16) -> Self

Converts to this type from the input type.
Source§

impl FromBytes for Int16
where i16: FromBytes,

Source§

fn read_from_bytes(source: &[u8]) -> Result<Self, SizeError<&[u8], Self>>
where Self: Sized,

Reads a copy of Self from the given source. Read more
Source§

fn read_from_prefix( source: &[u8], ) -> Result<(Self, &[u8]), SizeError<&[u8], Self>>
where Self: Sized,

Reads a copy of Self from the prefix of the given source. Read more
Source§

fn read_from_suffix( source: &[u8], ) -> Result<(&[u8], Self), SizeError<&[u8], Self>>
where Self: Sized,

Reads a copy of Self from the suffix of the given source. Read more
Source§

fn read_from_io<R>(src: R) -> Result<Self, Error>
where Self: Sized, R: Read,

Reads a copy of self from an io::Read. Read more
Source§

impl FromWire<Int16> for i16

Source§

const COPY_OPTIMIZATION: CopyOptimization<Int16, i16> = crate::CopyOptimization<Int16, i16>::PRIMITIVE

Whether the conversion from W to Self is equivalent to copying the raw bytes of W. Read more
Source§

fn from_wire(wire: Int16) -> Self

Converts the given owned value to this type.
Source§

impl FromWireRef<Int16> for i16

Source§

fn from_wire_ref(wire: &Int16) -> Self

Converts the given reference to this type.
Source§

impl FromZeros for Int16
where i16: FromZeros,

Source§

fn zero(&mut self)

Overwrites self with zeros. Read more
Source§

fn new_zeroed() -> Self
where Self: Sized,

Creates an instance of Self from zeroed bytes. Read more
Source§

fn new_box_zeroed() -> Result<Box<Self>, AllocError>
where Self: Sized,

Creates a Box<Self> from zeroed bytes. Read more
Source§

fn new_vec_zeroed(len: usize) -> Result<Vec<Self>, AllocError>
where Self: Sized,

Creates a Vec<Self> from zeroed bytes. Read more
Source§

fn extend_vec_zeroed( v: &mut Vec<Self>, additional: usize, ) -> Result<(), AllocError>
where Self: Sized,

Extends a Vec<Self> by pushing additional new items onto the end of the vector. The new items are initialized with zeros. Read more
Source§

fn insert_vec_zeroed( v: &mut Vec<Self>, position: usize, additional: usize, ) -> Result<(), AllocError>
where Self: Sized,

Inserts additional new items into Vec<Self> at position. The new items are initialized with zeros. Read more
Source§

impl Hash for Int16

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl IntoBytes for Int16
where i16: IntoBytes, (): PaddingFree<Self, { _ }>,

Source§

fn as_mut_bytes(&mut self) -> &mut [u8] ⓘ
where Self: FromBytes,

Gets the bytes of this value mutably. Read more
Source§

impl IntoNatural for Int16

Source§

type Natural = i16

A good default type for this wire type to convert into.
Source§

fn into_natural(self) -> Self::Natural

Converts this type into its natural equivalent.
Source§

impl LowerExp for Int16

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl LowerHex for Int16

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Mul for Int16

Source§

type Output = i16

The resulting type after applying the * operator.
Source§

fn mul(self, other: Int16) -> Self::Output

Performs the * operation. Read more
Source§

impl Mul<&Int16> for i16

Source§

type Output = i16

The resulting type after applying the * operator.
Source§

fn mul(self, other: &Int16) -> Self::Output

Performs the * operation. Read more
Source§

impl Mul<&Int16> for &i16

Source§

type Output = i16

The resulting type after applying the * operator.
Source§

fn mul(self, other: &Int16) -> Self::Output

Performs the * operation. Read more
Source§

impl Mul<&Int16> for Int16

Source§

type Output = i16

The resulting type after applying the * operator.
Source§

fn mul(self, other: &Int16) -> Self::Output

Performs the * operation. Read more
Source§

impl Mul<&Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the * operator.
Source§

fn mul(self, other: &Int16) -> Self::Output

Performs the * operation. Read more
Source§

impl Mul<&i16> for Int16

Source§

type Output = i16

The resulting type after applying the * operator.
Source§

fn mul(self, other: &i16) -> Self::Output

Performs the * operation. Read more
Source§

impl Mul<&i16> for &Int16

Source§

type Output = i16

The resulting type after applying the * operator.
Source§

fn mul(self, other: &i16) -> Self::Output

Performs the * operation. Read more
Source§

impl Mul<Int16> for i16

Source§

type Output = i16

The resulting type after applying the * operator.
Source§

fn mul(self, other: Int16) -> Self::Output

Performs the * operation. Read more
Source§

impl Mul<Int16> for &i16

Source§

type Output = i16

The resulting type after applying the * operator.
Source§

fn mul(self, other: Int16) -> Self::Output

Performs the * operation. Read more
Source§

impl Mul<Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the * operator.
Source§

fn mul(self, other: Int16) -> Self::Output

Performs the * operation. Read more
Source§

impl Mul<i16> for Int16

Source§

type Output = i16

The resulting type after applying the * operator.
Source§

fn mul(self, other: i16) -> Self::Output

Performs the * operation. Read more
Source§

impl Mul<i16> for &Int16

Source§

type Output = i16

The resulting type after applying the * operator.
Source§

fn mul(self, other: i16) -> Self::Output

Performs the * operation. Read more
Source§

impl MulAssign for Int16

Source§

fn mul_assign(&mut self, other: Int16)

Performs the *= operation. Read more
Source§

impl MulAssign<&Int16> for Int16

Source§

fn mul_assign(&mut self, other: &Int16)

Performs the *= operation. Read more
Source§

impl MulAssign<&i16> for Int16

Source§

fn mul_assign(&mut self, other: &i16)

Performs the *= operation. Read more
Source§

impl MulAssign<i16> for Int16

Source§

fn mul_assign(&mut self, other: i16)

Performs the *= operation. Read more
Source§

impl Neg for Int16

Source§

type Output = <i16 as Neg>::Output

The resulting type after applying the - operator.
Source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
Source§

impl Not for Int16

Source§

type Output = <i16 as Not>::Output

The resulting type after applying the ! operator.
Source§

fn not(self) -> Self::Output

Performs the unary ! operation. Read more
Source§

impl Octal for Int16

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Ord for Int16

Source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

fn clamp_to<R>(self, range: R) -> Self
where Self: Sized, R: ClampBounds<Self>,

🔬This is a nightly-only experimental API. (clamp_to)
Restrict a value to a certain range. Read more
Source§

impl PartialEq for Int16

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl PartialEq<i16> for Int16

Source§

fn eq(&self, other: &i16) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl PartialOrd for Int16

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl PartialOrd<i16> for Int16

Source§

fn partial_cmp(&self, other: &i16) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Product for Int16

Source§

fn product<I: Iterator<Item = Self>>(iter: I) -> Self

Takes an iterator and generates Self from the elements by multiplying the items.
Source§

impl Rem for Int16

Source§

type Output = i16

The resulting type after applying the % operator.
Source§

fn rem(self, other: Int16) -> Self::Output

Performs the % operation. Read more
Source§

impl Rem<&Int16> for i16

Source§

type Output = i16

The resulting type after applying the % operator.
Source§

fn rem(self, other: &Int16) -> Self::Output

Performs the % operation. Read more
Source§

impl Rem<&Int16> for &i16

Source§

type Output = i16

The resulting type after applying the % operator.
Source§

fn rem(self, other: &Int16) -> Self::Output

Performs the % operation. Read more
Source§

impl Rem<&Int16> for Int16

Source§

type Output = i16

The resulting type after applying the % operator.
Source§

fn rem(self, other: &Int16) -> Self::Output

Performs the % operation. Read more
Source§

impl Rem<&Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the % operator.
Source§

fn rem(self, other: &Int16) -> Self::Output

Performs the % operation. Read more
Source§

impl Rem<&i16> for Int16

Source§

type Output = i16

The resulting type after applying the % operator.
Source§

fn rem(self, other: &i16) -> Self::Output

Performs the % operation. Read more
Source§

impl Rem<&i16> for &Int16

Source§

type Output = i16

The resulting type after applying the % operator.
Source§

fn rem(self, other: &i16) -> Self::Output

Performs the % operation. Read more
Source§

impl Rem<Int16> for i16

Source§

type Output = i16

The resulting type after applying the % operator.
Source§

fn rem(self, other: Int16) -> Self::Output

Performs the % operation. Read more
Source§

impl Rem<Int16> for &i16

Source§

type Output = i16

The resulting type after applying the % operator.
Source§

fn rem(self, other: Int16) -> Self::Output

Performs the % operation. Read more
Source§

impl Rem<Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the % operator.
Source§

fn rem(self, other: Int16) -> Self::Output

Performs the % operation. Read more
Source§

impl Rem<i16> for Int16

Source§

type Output = i16

The resulting type after applying the % operator.
Source§

fn rem(self, other: i16) -> Self::Output

Performs the % operation. Read more
Source§

impl Rem<i16> for &Int16

Source§

type Output = i16

The resulting type after applying the % operator.
Source§

fn rem(self, other: i16) -> Self::Output

Performs the % operation. Read more
Source§

impl RemAssign for Int16

Source§

fn rem_assign(&mut self, other: Int16)

Performs the %= operation. Read more
Source§

impl RemAssign<&Int16> for Int16

Source§

fn rem_assign(&mut self, other: &Int16)

Performs the %= operation. Read more
Source§

impl RemAssign<&i16> for Int16

Source§

fn rem_assign(&mut self, other: &i16)

Performs the %= operation. Read more
Source§

impl RemAssign<i16> for Int16

Source§

fn rem_assign(&mut self, other: i16)

Performs the %= operation. Read more
Source§

impl Shl for Int16

Source§

type Output = i16

The resulting type after applying the << operator.
Source§

fn shl(self, other: Int16) -> Self::Output

Performs the << operation. Read more
Source§

impl Shl<&Int16> for i16

Source§

type Output = i16

The resulting type after applying the << operator.
Source§

fn shl(self, other: &Int16) -> Self::Output

Performs the << operation. Read more
Source§

impl Shl<&Int16> for &i16

Source§

type Output = i16

The resulting type after applying the << operator.
Source§

fn shl(self, other: &Int16) -> Self::Output

Performs the << operation. Read more
Source§

impl Shl<&Int16> for Int16

Source§

type Output = i16

The resulting type after applying the << operator.
Source§

fn shl(self, other: &Int16) -> Self::Output

Performs the << operation. Read more
Source§

impl Shl<&Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the << operator.
Source§

fn shl(self, other: &Int16) -> Self::Output

Performs the << operation. Read more
Source§

impl Shl<&i16> for Int16

Source§

type Output = i16

The resulting type after applying the << operator.
Source§

fn shl(self, other: &i16) -> Self::Output

Performs the << operation. Read more
Source§

impl Shl<&i16> for &Int16

Source§

type Output = i16

The resulting type after applying the << operator.
Source§

fn shl(self, other: &i16) -> Self::Output

Performs the << operation. Read more
Source§

impl Shl<Int16> for i16

Source§

type Output = i16

The resulting type after applying the << operator.
Source§

fn shl(self, other: Int16) -> Self::Output

Performs the << operation. Read more
Source§

impl Shl<Int16> for &i16

Source§

type Output = i16

The resulting type after applying the << operator.
Source§

fn shl(self, other: Int16) -> Self::Output

Performs the << operation. Read more
Source§

impl Shl<Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the << operator.
Source§

fn shl(self, other: Int16) -> Self::Output

Performs the << operation. Read more
Source§

impl Shl<i16> for Int16

Source§

type Output = i16

The resulting type after applying the << operator.
Source§

fn shl(self, other: i16) -> Self::Output

Performs the << operation. Read more
Source§

impl Shl<i16> for &Int16

Source§

type Output = i16

The resulting type after applying the << operator.
Source§

fn shl(self, other: i16) -> Self::Output

Performs the << operation. Read more
Source§

impl ShlAssign for Int16

Source§

fn shl_assign(&mut self, other: Int16)

Performs the <<= operation. Read more
Source§

impl ShlAssign<&Int16> for Int16

Source§

fn shl_assign(&mut self, other: &Int16)

Performs the <<= operation. Read more
Source§

impl ShlAssign<&i16> for Int16

Source§

fn shl_assign(&mut self, other: &i16)

Performs the <<= operation. Read more
Source§

impl ShlAssign<i16> for Int16

Source§

fn shl_assign(&mut self, other: i16)

Performs the <<= operation. Read more
Source§

impl Shr for Int16

Source§

type Output = i16

The resulting type after applying the >> operator.
Source§

fn shr(self, other: Int16) -> Self::Output

Performs the >> operation. Read more
Source§

impl Shr<&Int16> for i16

Source§

type Output = i16

The resulting type after applying the >> operator.
Source§

fn shr(self, other: &Int16) -> Self::Output

Performs the >> operation. Read more
Source§

impl Shr<&Int16> for &i16

Source§

type Output = i16

The resulting type after applying the >> operator.
Source§

fn shr(self, other: &Int16) -> Self::Output

Performs the >> operation. Read more
Source§

impl Shr<&Int16> for Int16

Source§

type Output = i16

The resulting type after applying the >> operator.
Source§

fn shr(self, other: &Int16) -> Self::Output

Performs the >> operation. Read more
Source§

impl Shr<&Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the >> operator.
Source§

fn shr(self, other: &Int16) -> Self::Output

Performs the >> operation. Read more
Source§

impl Shr<&i16> for Int16

Source§

type Output = i16

The resulting type after applying the >> operator.
Source§

fn shr(self, other: &i16) -> Self::Output

Performs the >> operation. Read more
Source§

impl Shr<&i16> for &Int16

Source§

type Output = i16

The resulting type after applying the >> operator.
Source§

fn shr(self, other: &i16) -> Self::Output

Performs the >> operation. Read more
Source§

impl Shr<Int16> for i16

Source§

type Output = i16

The resulting type after applying the >> operator.
Source§

fn shr(self, other: Int16) -> Self::Output

Performs the >> operation. Read more
Source§

impl Shr<Int16> for &i16

Source§

type Output = i16

The resulting type after applying the >> operator.
Source§

fn shr(self, other: Int16) -> Self::Output

Performs the >> operation. Read more
Source§

impl Shr<Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the >> operator.
Source§

fn shr(self, other: Int16) -> Self::Output

Performs the >> operation. Read more
Source§

impl Shr<i16> for Int16

Source§

type Output = i16

The resulting type after applying the >> operator.
Source§

fn shr(self, other: i16) -> Self::Output

Performs the >> operation. Read more
Source§

impl Shr<i16> for &Int16

Source§

type Output = i16

The resulting type after applying the >> operator.
Source§

fn shr(self, other: i16) -> Self::Output

Performs the >> operation. Read more
Source§

impl ShrAssign for Int16

Source§

fn shr_assign(&mut self, other: Int16)

Performs the >>= operation. Read more
Source§

impl ShrAssign<&Int16> for Int16

Source§

fn shr_assign(&mut self, other: &Int16)

Performs the >>= operation. Read more
Source§

impl ShrAssign<&i16> for Int16

Source§

fn shr_assign(&mut self, other: &i16)

Performs the >>= operation. Read more
Source§

impl ShrAssign<i16> for Int16

Source§

fn shr_assign(&mut self, other: i16)

Performs the >>= operation. Read more
Source§

impl Sub for Int16

Source§

type Output = i16

The resulting type after applying the - operator.
Source§

fn sub(self, other: Int16) -> Self::Output

Performs the - operation. Read more
Source§

impl Sub<&Int16> for i16

Source§

type Output = i16

The resulting type after applying the - operator.
Source§

fn sub(self, other: &Int16) -> Self::Output

Performs the - operation. Read more
Source§

impl Sub<&Int16> for &i16

Source§

type Output = i16

The resulting type after applying the - operator.
Source§

fn sub(self, other: &Int16) -> Self::Output

Performs the - operation. Read more
Source§

impl Sub<&Int16> for Int16

Source§

type Output = i16

The resulting type after applying the - operator.
Source§

fn sub(self, other: &Int16) -> Self::Output

Performs the - operation. Read more
Source§

impl Sub<&Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the - operator.
Source§

fn sub(self, other: &Int16) -> Self::Output

Performs the - operation. Read more
Source§

impl Sub<&i16> for Int16

Source§

type Output = i16

The resulting type after applying the - operator.
Source§

fn sub(self, other: &i16) -> Self::Output

Performs the - operation. Read more
Source§

impl Sub<&i16> for &Int16

Source§

type Output = i16

The resulting type after applying the - operator.
Source§

fn sub(self, other: &i16) -> Self::Output

Performs the - operation. Read more
Source§

impl Sub<Int16> for i16

Source§

type Output = i16

The resulting type after applying the - operator.
Source§

fn sub(self, other: Int16) -> Self::Output

Performs the - operation. Read more
Source§

impl Sub<Int16> for &i16

Source§

type Output = i16

The resulting type after applying the - operator.
Source§

fn sub(self, other: Int16) -> Self::Output

Performs the - operation. Read more
Source§

impl Sub<Int16> for &Int16

Source§

type Output = i16

The resulting type after applying the - operator.
Source§

fn sub(self, other: Int16) -> Self::Output

Performs the - operation. Read more
Source§

impl Sub<i16> for Int16

Source§

type Output = i16

The resulting type after applying the - operator.
Source§

fn sub(self, other: i16) -> Self::Output

Performs the - operation. Read more
Source§

impl Sub<i16> for &Int16

Source§

type Output = i16

The resulting type after applying the - operator.
Source§

fn sub(self, other: i16) -> Self::Output

Performs the - operation. Read more
Source§

impl SubAssign for Int16

Source§

fn sub_assign(&mut self, other: Int16)

Performs the -= operation. Read more
Source§

impl SubAssign<&Int16> for Int16

Source§

fn sub_assign(&mut self, other: &Int16)

Performs the -= operation. Read more
Source§

impl SubAssign<&i16> for Int16

Source§

fn sub_assign(&mut self, other: &i16)

Performs the -= operation. Read more
Source§

impl SubAssign<i16> for Int16

Source§

fn sub_assign(&mut self, other: i16)

Performs the -= operation. Read more
Source§

impl Sum for Int16

Source§

fn sum<I: Iterator<Item = Self>>(iter: I) -> Self

Takes an iterator and generates Self from the elements by “summing up” the items.
Source§

impl TryFrom<isize> for Int16

Source§

type Error = <i16 as TryFrom<isize>>::Error

The type returned in the event of a conversion error.
Source§

fn try_from(value: isize) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFromBytes for Int16

Source§

fn try_read_from_bytes( source: &[u8], ) -> Result<Self, ConvertError<!, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>
where Self: Sized,

Attempts to read the given source as a Self. Read more
Source§

fn try_read_from_prefix( source: &[u8], ) -> Result<(Self, &[u8]), ConvertError<!, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>
where Self: Sized,

Attempts to read a Self from the prefix of the given source. Read more
Source§

fn try_read_from_suffix( source: &[u8], ) -> Result<(&[u8], Self), ConvertError<!, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>
where Self: Sized,

Attempts to read a Self from the suffix of the given source. Read more
Source§

impl UpperExp for Int16

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl UpperHex for Int16

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Wire for Int16

Source§

type Narrowed<'de> = Int16

The narrowed wire type, restricted to the 'de lifetime.
Source§

fn zero_padding(_: &mut MaybeUninit<Self>)

Writes zeroes to the padding for this type, if any.

Auto Trait Implementations§

§

impl Freeze for Int16

§

impl RefUnwindSafe for Int16

§

impl Send for Int16

§

impl Sync for Int16

§

impl Unpin for Int16

§

impl UnsafeUnpin for Int16

§

impl UnwindSafe for Int16

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.