toto 1.1.0

This crate provides a simple conversion method between basic numerical types
Documentation
//! Trait for converting various numeric types to u64
//! 
//! This module defines the [Tou64] trait which provides a method for converting
//! different numeric types to u64. It includes implementations for all primitive
//! numeric types including unsigned integers, signed integers and floating point numbers.

/// A trait for converting a value to u64
///
/// This trait provides a standardized way to convert various numeric types to u64.
/// It is automatically implemented for all primitive numeric types.
///
/// # Examples
///
/// ```
/// use toto::traits::tou64::Tou64;
///
/// let x: u8 = 42;
/// let y: u64 = x.to_u64();
/// assert_eq!(y, 42_u64);
///
/// let z: i32 = -100;
/// let w: u64 = z.to_u64();
/// assert_eq!(w, 18446744073709551516_u64); // -100 casted to u64
/// ```
pub trait Tou64 {
    /// Converts the given value to u64
    ///
    /// This method performs a type cast from the implementing type to u64,
    /// using Rust's `as` operator semantics.
    ///
    /// # Returns
    ///
    /// The u64 representation of the value
    fn to_u64(self) -> u64;
}

/// Implementation of Tou64 for u8
///
/// Converts a u8 value to u64 using the `as` operator.
impl Tou64 for u8 {
    #[inline]
    fn to_u64(self) -> u64 {
        self as u64
    }
}

/// Implementation of Tou64 for u16
///
/// Converts a u16 value to u64 using the `as` operator.
impl Tou64 for u16 {
    #[inline]
    fn to_u64(self) -> u64 {
        self as u64
    }
}

/// Implementation of Tou64 for u32
///
/// Converts a u32 value to u64 using the `as` operator.
impl Tou64 for u32 {
    #[inline]
    fn to_u64(self) -> u64 {
        self as u64
    }
}

/// Implementation of Tou64 for u128
///
/// Converts a u128 value to u64 using the `as` operator.
impl Tou64 for u128 {
    #[inline]
    fn to_u64(self) -> u64 {
        self as u64
    }
}

/// Implementation of Tou64 for i8
///
/// Converts an i8 value to u64 using the `as` operator.
impl Tou64 for i8 {
    #[inline]
    fn to_u64(self) -> u64 {
        self as u64
    }
}

/// Implementation of Tou64 for i16
///
/// Converts an i16 value to u64 using the `as` operator.
impl Tou64 for i16 {
    #[inline]
    fn to_u64(self) -> u64 {
        self as u64
    }
}

/// Implementation of Tou64 for i32
///
/// Converts an i32 value to u64 using the `as` operator.
impl Tou64 for i32 {
    #[inline]
    fn to_u64(self) -> u64 {
        self as u64
    }
}

/// Implementation of Tou64 for i64
///
/// Converts an i64 value to u64 using the `as` operator.
impl Tou64 for i64 {
    #[inline]
    fn to_u64(self) -> u64 {
        self as u64
    }
}

/// Implementation of Tou64 for i128
///
/// Converts an i128 value to u64 using the `as` operator.
impl Tou64 for i128 {
    #[inline]
    fn to_u64(self) -> u64 {
        self as u64
    }
}

/// Implementation of Tou64 for f32
///
/// Converts an f32 value to u64 using the `as` operator.
/// Note that this may involve precision loss due to the difference in
/// representation between floating point and integer types.
impl Tou64 for f32 {
    #[inline]
    fn to_u64(self) -> u64 {
        self as u64
    }
}

/// Implementation of Tou64 for f64
///
/// Converts an f64 value to u64 using the `as` operator.
/// Note that this may involve precision loss due to the difference in
/// representation between floating point and integer types.
impl Tou64 for f64 {
    #[inline]
    fn to_u64(self) -> u64 {
        self as u64
    }
}