Struct digit_sequence::DigitSequence
source · pub struct DigitSequence(/* private fields */);
Expand description
Immutable sequence of u8 digits.
§Creation
A digit sequence can be created via conversions - which are not always infallible.
§Infallible conversions
-
from any unsigned number:
use digit_sequence::{Result, DigitSequence}; let sequence: DigitSequence = 985u32.into(); assert_eq!(sequence, [9, 8, 5]);
§Fallible conversions
-
from any signed number - which fails if the number is negative:
use digit_sequence::{Result, DigitSequence}; let sequence: DigitSequence = 3791i32.try_into()?; assert_eq!(sequence, [3, 7, 9, 1]);
-
from &str - which fails in case of non-digit (radix 10) characters:
use digit_sequence::{Result, DigitSequence}; let sequence: DigitSequence = "09240".parse()?; assert_eq!(sequence, [0, 9, 2, 4, 0]);
-
from a &[u8] - which fails if the numbers are not 0-9 digits:
use digit_sequence::{Result, DigitSequence}; let source = [0, 9, 2, 4, 0]; let sequence: DigitSequence = (&source).try_into()?; assert_eq!(sequence, source);
§Usage
This data structure implements IntoIterator and also provides the iter method - thus enabling standard iterations as well as the Iterator methods.
§for
-iterations
§read-only
use digit_sequence::DigitSequence;
let sequence: DigitSequence = 1234567890u128.into();
let mut even_vec = vec![];
for &digit in &sequence {
if digit % 2 == 0 {
even_vec.push(digit);
}
}
assert_eq!(even_vec, vec![2, 4, 6, 8, 0]);
§consuming
use digit_sequence::DigitSequence;
let sequence: DigitSequence = 1234567890u128.into();
let mut even_vec = vec![];
for digit in sequence {
if digit % 2 == 0 {
even_vec.push(digit);
}
}
assert_eq!(even_vec, vec![2, 4, 6, 8, 0]);
§Iterator methods
§read-only
use digit_sequence::DigitSequence;
let sequence: DigitSequence = 1234567890u128.into();
let even_vec: Vec<u8> = sequence.iter()
.filter(|&digit| digit % 2 == 0)
.map(|&digit|digit)
.collect();
assert_eq!(even_vec, vec![2, 4, 6, 8, 0]);
§consuming
use digit_sequence::DigitSequence;
let sequence: DigitSequence = 1234567890u128.into();
let even_vec: Vec<u8> = sequence.into_iter()
.filter(|digit| digit % 2 == 0)
.collect();
assert_eq!(even_vec, vec![2, 4, 6, 8, 0]);
§Conversion to String
-
the Debug trait is derived
-
for the Display trait, the sequence is formatted just by joining its digits
§Serialization
When the serde
feature is enabled for this crate, Self implements the [serde::Serialize] and [serde::Deserialize] traits.
Implementations§
Trait Implementations§
source§impl Clone for DigitSequence
impl Clone for DigitSequence
source§fn clone(&self) -> DigitSequence
fn clone(&self) -> DigitSequence
Returns a copy 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 DigitSequence
impl Debug for DigitSequence
source§impl Default for DigitSequence
impl Default for DigitSequence
source§fn default() -> DigitSequence
fn default() -> DigitSequence
Returns the “default value” for a type. Read more
source§impl Display for DigitSequence
impl Display for DigitSequence
source§impl From<u128> for DigitSequence
impl From<u128> for DigitSequence
source§fn from(value: u128) -> DigitSequence
fn from(value: u128) -> DigitSequence
Converts to this type from the input type.
source§impl From<u16> for DigitSequence
impl From<u16> for DigitSequence
source§fn from(value: u16) -> DigitSequence
fn from(value: u16) -> DigitSequence
Converts to this type from the input type.
source§impl From<u32> for DigitSequence
impl From<u32> for DigitSequence
source§fn from(value: u32) -> DigitSequence
fn from(value: u32) -> DigitSequence
Converts to this type from the input type.
source§impl From<u64> for DigitSequence
impl From<u64> for DigitSequence
source§fn from(value: u64) -> DigitSequence
fn from(value: u64) -> DigitSequence
Converts to this type from the input type.
source§impl From<u8> for DigitSequence
impl From<u8> for DigitSequence
source§fn from(value: u8) -> DigitSequence
fn from(value: u8) -> DigitSequence
Converts to this type from the input type.
source§impl FromStr for DigitSequence
impl FromStr for DigitSequence
source§impl Hash for DigitSequence
impl Hash for DigitSequence
source§impl<'a> IntoIterator for &'a DigitSequence
impl<'a> IntoIterator for &'a DigitSequence
source§impl IntoIterator for DigitSequence
impl IntoIterator for DigitSequence
source§impl Ord for DigitSequence
impl Ord for DigitSequence
source§fn cmp(&self, other: &DigitSequence) -> Ordering
fn cmp(&self, other: &DigitSequence) -> 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<&[u8]> for DigitSequence
impl PartialEq<&[u8]> for DigitSequence
source§impl<const N: usize> PartialEq<&[u8; N]> for DigitSequence
impl<const N: usize> PartialEq<&[u8; N]> for DigitSequence
source§impl<const N: usize> PartialEq<[u8; N]> for DigitSequence
impl<const N: usize> PartialEq<[u8; N]> for DigitSequence
source§impl PartialEq<Vec<u8>> for DigitSequence
impl PartialEq<Vec<u8>> for DigitSequence
source§impl PartialEq for DigitSequence
impl PartialEq for DigitSequence
source§fn eq(&self, other: &DigitSequence) -> bool
fn eq(&self, other: &DigitSequence) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for DigitSequence
impl PartialOrd for DigitSequence
source§fn partial_cmp(&self, other: &DigitSequence) -> Option<Ordering>
fn partial_cmp(&self, other: &DigitSequence) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl TryFrom<&[u8]> for DigitSequence
impl TryFrom<&[u8]> for DigitSequence
source§impl TryFrom<i128> for DigitSequence
impl TryFrom<i128> for DigitSequence
source§impl TryFrom<i16> for DigitSequence
impl TryFrom<i16> for DigitSequence
source§impl TryFrom<i32> for DigitSequence
impl TryFrom<i32> for DigitSequence
source§impl TryFrom<i64> for DigitSequence
impl TryFrom<i64> for DigitSequence
source§impl TryFrom<i8> for DigitSequence
impl TryFrom<i8> for DigitSequence
impl Eq for DigitSequence
impl StructuralPartialEq for DigitSequence
Auto Trait Implementations§
impl Freeze for DigitSequence
impl RefUnwindSafe for DigitSequence
impl Send for DigitSequence
impl Sync for DigitSequence
impl Unpin for DigitSequence
impl UnwindSafe for DigitSequence
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