#![allow(dead_code)]
#[inline]
#[must_use]
#[allow(clippy::cast_possible_truncation)]
pub fn u32_sat(n: usize) -> u32 {
n.min(u32::MAX as usize) as u32
}
#[inline]
#[must_use]
#[allow(clippy::cast_possible_truncation)]
pub fn u16_sat(n: usize) -> u16 {
n.min(u16::MAX as usize) as u16
}
#[inline]
#[must_use]
#[allow(clippy::cast_possible_truncation)]
pub fn u16_from_u32(n: u32) -> u16 {
n.min(u32::from(u16::MAX)) as u16
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn u32_sat_clamps_at_max() {
assert_eq!(u32_sat(usize::MAX), u32::MAX);
assert_eq!(u32_sat(42), 42);
}
#[test]
fn u16_sat_clamps_at_max() {
assert_eq!(u16_sat(usize::MAX), u16::MAX);
assert_eq!(u16_sat(100), 100);
}
#[test]
fn u16_from_u32_clamps() {
assert_eq!(u16_from_u32(u32::MAX), u16::MAX);
assert_eq!(u16_from_u32(255), 255);
}
}