#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use crate::{
bytes_impl::data_impl,
constants::{BYTE, GIGABYTE, KILOBYTE, MEGABYTE, PETABYTE, TERABYTE},
};
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Default)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Byte(u64);
impl Byte {
pub const FACTOR: u64 = BYTE;
#[cfg(feature = "units")]
pub const UNIT: &str = "B";
pub const fn new(bytes: u64) -> Self {
Byte(bytes)
}
}
data_impl!(Self = Byte, Unit = "B", Factor = BYTE);
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Default)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct KiloByte(u64);
impl KiloByte {
pub const FACTOR: u64 = KILOBYTE;
#[cfg(feature = "units")]
pub const UNIT: &str = "KB";
pub const fn new(bytes: u64) -> Self {
KiloByte(bytes)
}
}
data_impl!(Self = KiloByte, Unit = "KB", Factor = KILOBYTE);
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Default)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct MegaByte(u64);
impl MegaByte {
pub const FACTOR: u64 = MEGABYTE;
#[cfg(feature = "units")]
pub const UNIT: &str = "MB";
pub const fn new(bytes: u64) -> Self {
MegaByte(bytes)
}
}
data_impl!(Self = MegaByte, Unit = "MB", Factor = MEGABYTE);
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Default)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct GigaByte(u64);
impl GigaByte {
pub const FACTOR: u64 = GIGABYTE;
#[cfg(feature = "units")]
pub const UNIT: &str = "GB";
pub const fn new(bytes: u64) -> Self {
GigaByte(bytes)
}
}
data_impl!(Self = GigaByte, Unit = "GB", Factor = GIGABYTE);
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Default)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct TeraByte(u64);
impl TeraByte {
pub const FACTOR: u64 = TERABYTE;
#[cfg(feature = "units")]
pub const UNIT: &str = "TB";
pub const fn new(bytes: u64) -> Self {
TeraByte(bytes)
}
}
data_impl!(Self = TeraByte, Unit = "TB", Factor = TERABYTE);
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Default)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct PetaByte(u64);
impl PetaByte {
pub const FACTOR: u64 = PETABYTE;
#[cfg(feature = "units")]
pub const UNIT: &str = "PB";
pub const fn new(bytes: u64) -> Self {
PetaByte(bytes)
}
}
data_impl!(Self = PetaByte, Unit = "PB", Factor = PETABYTE);