pub struct OneBasedUsize(/* private fields */);Expand description
Represents 1-based index of usize.
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 = OneBasedUsize::from_one_based(5)?;
assert_eq!(v.as_zero_based(), 4);
// Creates from 0-based index
let v = OneBasedUsize::from_zero_based(0)?;
assert_eq!(v.as_one_based().get(), 1);Implementations§
Source§impl OneBasedUsize
 
impl OneBasedUsize
Sourcepub fn from_one_based(v: usize) -> Result<Self, OneBasedError>
 
pub fn from_one_based(v: usize) -> Result<Self, OneBasedError>
Creates $name from 1-based index value.
Returns error if the given index is zero.
Sourcepub fn from_one_based_nonzero(v: NonZeroUsize) -> Self
 
pub fn from_one_based_nonzero(v: NonZeroUsize) -> Self
Creates $name from 1-based index value as [$nonzerotype].
This will always succeed.
Sourcepub fn from_zero_based(v: usize) -> Result<Self, OneBasedError>
 
pub fn from_zero_based(v: usize) -> 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 fn as_zero_based(&self) -> usize
 
pub fn as_zero_based(&self) -> usize
Returns regular 0-based index.
Sourcepub fn as_one_based(&self) -> NonZeroUsize
 
pub fn as_one_based(&self) -> NonZeroUsize
Returns 1-based index.
Trait Implementations§
Source§impl Clone for OneBasedUsize
 
impl Clone for OneBasedUsize
Source§fn clone(&self) -> OneBasedUsize
 
fn clone(&self) -> OneBasedUsize
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from 
source. Read moreSource§impl Debug for OneBasedUsize
 
impl Debug for OneBasedUsize
Source§impl Display for OneBasedUsize
 
impl Display for OneBasedUsize
Source§impl FromStr for OneBasedUsize
 
impl FromStr for OneBasedUsize
Source§impl Ord for OneBasedUsize
 
impl Ord for OneBasedUsize
Source§fn cmp(&self, other: &OneBasedUsize) -> Ordering
 
fn cmp(&self, other: &OneBasedUsize) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
    Self: Sized,
 
fn max(self, other: Self) -> Selfwhere
    Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialEq for OneBasedUsize
 
impl PartialEq for OneBasedUsize
Source§impl PartialOrd for OneBasedUsize
 
impl PartialOrd for OneBasedUsize
impl Copy for OneBasedUsize
impl Eq for OneBasedUsize
impl StructuralPartialEq for OneBasedUsize
Auto Trait Implementations§
impl Freeze for OneBasedUsize
impl RefUnwindSafe for OneBasedUsize
impl Send for OneBasedUsize
impl Sync for OneBasedUsize
impl Unpin for OneBasedUsize
impl UnwindSafe for OneBasedUsize
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more