pub struct OneBasedU16(/* private fields */);Expand description
Represents 1-based index of u16.
To describe configuration by humans, often 1-based index is easier than 0-based to understand.
On the other hand, 0-based index is easier to use in the programming.
Also, it’s quite hard to track if the index is 0-based or 1-based.
$name provides ergonomics to handle user provided 1-baed index safely.
// Creates from 1-based index
let v = OneBasedU16::from_one_based(5)?;
assert_eq!(v.as_zero_based(), 4);
// Creates from 0-based index
let v = OneBasedU16::from_zero_based(0)?;
assert_eq!(v.as_one_based().get(), 1);Implementations§
Source§impl OneBasedU16
impl OneBasedU16
Sourcepub const fn from_one_based(v: u16) -> Result<Self, OneBasedError>
pub const fn from_one_based(v: u16) -> Result<Self, OneBasedError>
Creates $name from 1-based index value.
Returns error if the given index is zero.
Sourcepub const unsafe fn from_one_based_unchecked(v: u16) -> Self
pub const unsafe fn from_one_based_unchecked(v: u16) -> Self
Sourcepub const fn from_one_based_nonzero(v: NonZeroU16) -> Self
pub const fn from_one_based_nonzero(v: NonZeroU16) -> Self
Creates $name from 1-based index value as [$nonzerotype].
This will always succeed.
Sourcepub const fn from_zero_based(v: u16) -> Result<Self, OneBasedError>
pub const fn from_zero_based(v: u16) -> Result<Self, OneBasedError>
Creates $name from 0-based index value.
Returns error if the given index is MAX value,
as that would case overflow when converted to 1-based.
Sourcepub const unsafe fn from_zero_based_unchecked(v: u16) -> Self
pub const unsafe fn from_zero_based_unchecked(v: u16) -> Self
Creates $name from 0-based index value without check.
§Safety
This function results in undefined behavior when v == u16::MAX.
// This should cause undefined behavior
unsafe {
OneBasedU16::from_zero_based_unchecked(u16::MAX);
}Sourcepub const fn as_zero_based(&self) -> u16
pub const fn as_zero_based(&self) -> u16
Returns regular 0-based index.
Sourcepub const fn as_one_based(&self) -> NonZeroU16
pub const fn as_one_based(&self) -> NonZeroU16
Returns 1-based index.
Trait Implementations§
Source§impl Clone for OneBasedU16
impl Clone for OneBasedU16
Source§fn clone(&self) -> OneBasedU16
fn clone(&self) -> OneBasedU16
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for OneBasedU16
impl Debug for OneBasedU16
Source§impl Display for OneBasedU16
impl Display for OneBasedU16
Source§impl From<OneBasedU16> for OneBasedU128
impl From<OneBasedU16> for OneBasedU128
Source§fn from(value: OneBasedU16) -> Self
fn from(value: OneBasedU16) -> Self
Converts OneBasedU16 to OneBasedU128.
Source§impl From<OneBasedU16> for OneBasedU32
impl From<OneBasedU16> for OneBasedU32
Source§fn from(value: OneBasedU16) -> Self
fn from(value: OneBasedU16) -> Self
Converts OneBasedU16 to OneBasedU32.
Source§impl From<OneBasedU16> for OneBasedU64
impl From<OneBasedU16> for OneBasedU64
Source§fn from(value: OneBasedU16) -> Self
fn from(value: OneBasedU16) -> Self
Converts OneBasedU16 to OneBasedU64.
Source§impl From<OneBasedU8> for OneBasedU16
impl From<OneBasedU8> for OneBasedU16
Source§fn from(value: OneBasedU8) -> Self
fn from(value: OneBasedU8) -> Self
Converts OneBasedU8 to OneBasedU16.
Source§impl FromStr for OneBasedU16
impl FromStr for OneBasedU16
Source§impl Ord for OneBasedU16
impl Ord for OneBasedU16
Source§fn cmp(&self, other: &OneBasedU16) -> Ordering
fn cmp(&self, other: &OneBasedU16) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for OneBasedU16
impl PartialEq for OneBasedU16
Source§impl PartialOrd for OneBasedU16
impl PartialOrd for OneBasedU16
Source§impl TryFrom<OneBasedU128> for OneBasedU16
impl TryFrom<OneBasedU128> for OneBasedU16
Source§fn try_from(value: OneBasedU128) -> Result<Self, Self::Error>
fn try_from(value: OneBasedU128) -> Result<Self, Self::Error>
Attempts to convert OneBasedU128 to OneBasedU16.
Source§type Error = TryFromIntError
type Error = TryFromIntError
Source§impl TryFrom<OneBasedU16> for OneBasedU8
impl TryFrom<OneBasedU16> for OneBasedU8
Source§fn try_from(value: OneBasedU16) -> Result<Self, Self::Error>
fn try_from(value: OneBasedU16) -> Result<Self, Self::Error>
Attempts to convert OneBasedU16 to OneBasedU8.
Source§type Error = TryFromIntError
type Error = TryFromIntError
Source§impl TryFrom<OneBasedU16> for OneBasedUsize
impl TryFrom<OneBasedU16> for OneBasedUsize
Source§fn try_from(value: OneBasedU16) -> Result<Self, Self::Error>
fn try_from(value: OneBasedU16) -> Result<Self, Self::Error>
Attempts to convert OneBasedU16 to OneBasedUsize.
Source§type Error = TryFromIntError
type Error = TryFromIntError
Source§impl TryFrom<OneBasedU32> for OneBasedU16
impl TryFrom<OneBasedU32> for OneBasedU16
Source§fn try_from(value: OneBasedU32) -> Result<Self, Self::Error>
fn try_from(value: OneBasedU32) -> Result<Self, Self::Error>
Attempts to convert OneBasedU32 to OneBasedU16.
Source§type Error = TryFromIntError
type Error = TryFromIntError
Source§impl TryFrom<OneBasedU64> for OneBasedU16
impl TryFrom<OneBasedU64> for OneBasedU16
Source§fn try_from(value: OneBasedU64) -> Result<Self, Self::Error>
fn try_from(value: OneBasedU64) -> Result<Self, Self::Error>
Attempts to convert OneBasedU64 to OneBasedU16.
Source§type Error = TryFromIntError
type Error = TryFromIntError
Source§impl TryFrom<OneBasedUsize> for OneBasedU16
impl TryFrom<OneBasedUsize> for OneBasedU16
Source§fn try_from(value: OneBasedUsize) -> Result<Self, Self::Error>
fn try_from(value: OneBasedUsize) -> Result<Self, Self::Error>
Attempts to convert OneBasedUsize to OneBasedU16.