pub struct Bit(/* private fields */);bit and u128 only.Expand description
Representing the size in bits.
Implementations§
source§impl Bit
impl Bit
Associated functions for generating AdjustedBit.
sourcepub fn get_adjusted_unit(self, unit: Unit) -> AdjustedBit
pub fn get_adjusted_unit(self, unit: Unit) -> AdjustedBit
Adjust the unit and value for this Bit instance.
Examples
use byte_unit::{AdjustedBit, Bit, Unit};
let bit = Bit::parse_str("123Kib").unwrap();
let adjusted_bit = bit.get_adjusted_unit(Unit::Kbit);
assert_eq!("125.952 Kb", adjusted_bit.to_string());use byte_unit::{AdjustedBit, Bit, Unit};
let bit = Bit::parse_str("50.84 Mb").unwrap();
let adjusted_bit = bit.get_adjusted_unit(Unit::Mibit);
assert_eq!("48.48480224609375 Mib", adjusted_bit.to_string());sourcepub fn get_appropriate_unit(&self, unit_type: UnitType) -> AdjustedBit
pub fn get_appropriate_unit(&self, unit_type: UnitType) -> AdjustedBit
Find the appropriate unit and value for this Bit instance.
Examples
use byte_unit::{Bit, UnitType};
let bit = Bit::parse_str("123Kib").unwrap();
let adjusted_bit = bit.get_appropriate_unit(UnitType::Decimal);
assert_eq!("125.952 Kb", adjusted_bit.to_string());use byte_unit::{Bit, UnitType};
let bit = Bit::parse_str("50.84 Mb").unwrap();
let adjusted_bit = bit.get_appropriate_unit(UnitType::Binary);
assert_eq!("48.48480224609375 Mib", adjusted_bit.to_string());source§impl Bit
impl Bit
Associated functions for building Bit instances using Decimal.
sourcepub fn from_decimal(size: Decimal) -> Option<Self>
pub fn from_decimal(size: Decimal) -> Option<Self>
Create a new Bit instance from a size in bits.
Examples
use byte_unit::Bit;
use rust_decimal::Decimal;
let bit = Bit::from_decimal(Decimal::from(15000000u64)).unwrap(); // 15 MbPoints to Note
- If the input size is too large (the maximum is 1027 - 1 if the
u128feature is enabled, or 264 - 1 otherwise) or not greater than or equal to 0, this function will returnNone. - The fractional part will be rounded up.
source§impl Bit
impl Bit
Associated functions for building Bit instances using Decimal (with Unit).
sourcepub fn from_decimal_with_unit(size: Decimal, unit: Unit) -> Option<Self>
pub fn from_decimal_with_unit(size: Decimal, unit: Unit) -> Option<Self>
Create a new Bit instance from a size of bits with a unit.
Examples
use byte_unit::{Bit, Unit};
use rust_decimal::Decimal;
let bit = Bit::from_decimal_with_unit(Decimal::from(15u64), Unit::Mbit).unwrap(); // 15 MbPoints to Note
- If the calculated bit is too large or not greater than or equal to 0, this function will return
None. - The calculated bit will be rounded up.
source§impl Bit
impl Bit
Methods for finding an unit using Decimal.
sourcepub fn get_recoverable_unit(
self,
allow_in_bits: bool,
precision: usize
) -> (Decimal, Unit)
pub fn get_recoverable_unit( self, allow_in_bits: bool, precision: usize ) -> (Decimal, Unit)
Find the appropriate unit and value that can be used to recover back to this Bit precisely.
Examples
use byte_unit::{Bit, Unit};
let bit = Bit::from_u64(3670016);
assert_eq!(
(3.5f64.try_into().unwrap(), Unit::Mibit),
bit.get_recoverable_unit(false, 3)
);use byte_unit::{Bit, Unit};
let bit = Bit::from_u64(28000000);
assert_eq!(
(3.5f64.try_into().unwrap(), Unit::MB),
bit.get_recoverable_unit(true, 3)
);use byte_unit::{Bit, Unit};
let bit = Bit::from_u64(437500);
assert_eq!(
(437.5f64.try_into().unwrap(), Unit::Kbit),
bit.get_recoverable_unit(false, 3)
);Points to Note
precisionshould be smaller or equal to26if theu128feature is enabled, otherwise19. The typicalprecisionis3.
source§impl Bit
impl Bit
Associated functions for parsing strings.
sourcepub fn parse_str<S: AsRef<str>>(s: S) -> Result<Self, ParseError>
pub fn parse_str<S: AsRef<str>>(s: S) -> Result<Self, ParseError>
Create a new Bit instance from a string.
The string may be "10", "10B", "10M", "10MB", "10MiB", "80b", "80Mb", "80Mbit".
You can ignore the case of “B” (bit), which means b will still be treated as bits instead of bits.
Examples
let bit = Bit::parse_str("123Kib").unwrap(); // 123 * 1024 bitssource§impl Bit
impl Bit
Associated functions for building Bit instances.
sourcepub const fn from_u128(size: u128) -> Option<Self>
pub const fn from_u128(size: u128) -> Option<Self>
Create a new Bit instance from a size in bits.
Examples
let bit = Bit::from_u128(15000000).unwrap(); // 15 MbPoints to Note
- If the input size is too large (the maximum is 1027 - 1 if the
u128feature is enabled, or 264 - 1 otherwise), this function will returnNone.
sourcepub const unsafe fn from_u128_unsafe(size: u128) -> Self
pub const unsafe fn from_u128_unsafe(size: u128) -> Self
sourcepub fn from_f64(size: f64) -> Option<Self>
pub fn from_f64(size: f64) -> Option<Self>
Create a new Bit instance from a size im bits.
Examples
let bit = Bit::from_f64(15000000.0).unwrap(); // 15 MbPoints to Note
- If the input size is too large (the maximum is 1027 - 1 if the
u128feature is enabled, or 264 - 1 otherwise) or not greater than or equal to 0, this function will returnNone. - The fractional part will be rounded up.
sourcepub fn from_f32(size: f32) -> Option<Self>
pub fn from_f32(size: f32) -> Option<Self>
Create a new Bit instance from a size in bits.
Examples
let bit = Bit::from_f32(15000000.0).unwrap(); // 15 MbPoints to Note
- If the input size is too large (the maximum is 1027 - 1 if the
u128feature is enabled, or 264 - 1 otherwise) or not greater than or equal to 0, this function will returnNone. - The fractional part will be rounded up.
sourcepub const fn from_i128(size: i128) -> Option<Self>
pub const fn from_i128(size: i128) -> Option<Self>
Create a new Bit instance from a size in bits.
Examples
let bit = Bit::from_i128(15000000).unwrap(); // 15 MbPoints to Note
- If the input size is too large (the maximum is 1027 - 1 if the
u128feature is enabled, or 264 - 1 otherwise) or negative, this function will returnNone.
source§impl Bit
impl Bit
Associated functions for building Bit instances (with Unit).
sourcepub const fn from_u128_with_unit(size: u128, unit: Unit) -> Option<Self>
pub const fn from_u128_with_unit(size: u128, unit: Unit) -> Option<Self>
Create a new Bit instance from a size of bits with a unit.
Examples
use byte_unit::{Bit, Unit};
let bit = Bit::from_u128_with_unit(15, Unit::Mbit).unwrap(); // 15 MbPoints to Note
- If the calculated bit is too large, this function will return
None.
sourcepub const fn from_u64_with_unit(size: u64, unit: Unit) -> Option<Self>
pub const fn from_u64_with_unit(size: u64, unit: Unit) -> Option<Self>
Create a new Bit instance from a size of bits with a unit.
Examples
use byte_unit::{Bit, Unit};
let bit = Bit::from_u64_with_unit(15, Unit::Mbit).unwrap(); // 15 MbPoints to Note
- If the calculated bit is too large, this function will return
None. - If the input unit is
Bit, the calculated bit will be rounded up.
sourcepub fn from_f64_with_unit(size: f64, unit: Unit) -> Option<Self>
pub fn from_f64_with_unit(size: f64, unit: Unit) -> Option<Self>
Create a new Bit instance from a size of bits with a unit.
Examples
use byte_unit::{Bit, Unit};
let bit = Bit::from_f64_with_unit(15.0, Unit::Mbit).unwrap(); // 15 MbPoints to Note
- If the calculated bit is too large or not greater than or equal to 0, this function will return
None. - The calculated bit will be rounded up.
sourcepub fn from_f32_with_unit(size: f32, unit: Unit) -> Option<Self>
pub fn from_f32_with_unit(size: f32, unit: Unit) -> Option<Self>
Create a new Bit instance from a size of bits with a unit.
Examples
use byte_unit::{Bit, Unit};
let bit = Bit::from_f32_with_unit(15.0, Unit::Mbit).unwrap(); // 15 MbPoints to Note
- If the calculated bit is too large or not greater than or equal to 0, this function will return
None. - The calculated bit will be rounded up.
sourcepub const fn from_i128_with_unit(size: i128, unit: Unit) -> Option<Self>
pub const fn from_i128_with_unit(size: i128, unit: Unit) -> Option<Self>
Create a new Bit instance from a size of bits with a unit.
Examples
use byte_unit::{Bit, Unit};
let bit = Bit::from_i128_with_unit(15, Unit::Mibit).unwrap(); // 15 MbPoints to Note
- If the calculated bit is too large or negative, this function will return
None.
sourcepub const fn from_i64_with_unit(size: i64, unit: Unit) -> Option<Self>
pub const fn from_i64_with_unit(size: i64, unit: Unit) -> Option<Self>
Create a new Bit instance from a size of bits with a unit.
Examples
use byte_unit::{Bit, Unit};
let bit = Bit::from_i64_with_unit(15, Unit::Mbit).unwrap(); // 15 MbPoints to Note
- If the calculated bit is too large or negative, this function will return
None.
source§impl Bit
impl Bit
Methods for converting a Bit instance into a primitive integer.
sourcepub const fn as_u128(self) -> u128
pub const fn as_u128(self) -> u128
Retrieve the bit represented by this Bit instance.
Examples
use byte_unit::Bit;
let bit = Bit::parse_str("123KiB").unwrap();
let result = bit.as_u128();
assert_eq!(1007616, result);use byte_unit::Bit;
let bit = Bit::parse_str("123Kib").unwrap();
let result = bit.as_u128();
assert_eq!(125952, result);sourcepub const fn as_u64(self) -> u64
pub const fn as_u64(self) -> u64
Retrieve the bit represented by this Bit instance. When the u128 feature is enabled, if the bit is actually greater than 264 - 1, it will return 264 - 1.
Examples
use byte_unit::Bit;
let bit = Bit::parse_str("1kb").unwrap();
let result = bit.as_u64();
assert_eq!(1000, result);use byte_unit::Bit;
let bit = Bit::parse_str("1zb").unwrap();
let result = bit.as_u64();
assert_eq!(u64::MAX, result);sourcepub const fn as_u64_checked(self) -> Option<u64>
pub const fn as_u64_checked(self) -> Option<u64>
Retrieve the bit represented by this Bit instance.
Examples
use byte_unit::Bit;
let bit = Bit::parse_str("1k").unwrap();
let result = bit.as_u64_checked();
assert_eq!(Some(1000), result);use byte_unit::Bit;
let bit = Bit::parse_str("1zb").unwrap();
let result = bit.as_u64_checked();
assert_eq!(None, result);source§impl Bit
impl Bit
Methods for calculation.
sourcepub const fn add(self, rhs: Bit) -> Option<Bit>
pub const fn add(self, rhs: Bit) -> Option<Bit>
Add another Bit instance.
Examples
use byte_unit::Bit;
let bit_1 = Bit::from_u64(1024);
let bit_2 = Bit::from_u64(512);
let bit = bit_1.add(bit_2).unwrap();
assert_eq!(1536, bit.as_u64());Points to Note
- If the calculated bit is too large, this function will return
None.
sourcepub const fn subtract(self, rhs: Bit) -> Option<Bit>
pub const fn subtract(self, rhs: Bit) -> Option<Bit>
Subtract another Bit instance.
Examples
use byte_unit::Bit;
let bit_1 = Bit::from_u64(1024);
let bit_2 = Bit::from_u64(512);
let bit = bit_1.subtract(bit_2).unwrap();
assert_eq!(512, bit.as_u64());Points to Note
- If the right-hand side is bigger then this
Bitinstance, this function will returnNone.
sourcepub const fn multiply(self, rhs: usize) -> Option<Bit>
pub const fn multiply(self, rhs: usize) -> Option<Bit>
Multiplied by an unsigned integer.
Examples
use byte_unit::Bit;
let count = 100;
let bit = Bit::from_u64(1024);
let total_bit = bit.multiply(100).unwrap();
assert_eq!(102400, total_bit.as_u64());Points to Note
- If the calculated bit is too large, this function will return
None.
sourcepub const fn divide(self, rhs: usize) -> Option<Bit>
pub const fn divide(self, rhs: usize) -> Option<Bit>
Divided by an unsigned integer.
Examples
use byte_unit::Bit;
let count = 100;
let bit = Bit::from_u64(1024);
let total_bit = bit.divide(100).unwrap();
assert_eq!(10, total_bit.as_u64());Points to Note
- If the input right-hand side is zero, this function will return
None. - The result will be rounded down.
source§impl Bit
impl Bit
Methods for finding an unit.
sourcepub const fn get_exact_unit(self, allow_in_bytes: bool) -> (u128, Unit)
pub const fn get_exact_unit(self, allow_in_bytes: bool) -> (u128, Unit)
Obtain the largest unit which is the greatest factor of this Bit instance.
Examples
use byte_unit::{Bit, Unit};
let bit = Bit::from_u64(3145728);
let (n, unit) = bit.get_exact_unit(true);
assert_eq!(3, n);
assert_eq!(Unit::Mibit, unit);use byte_unit::{Bit, Unit};
let bit = Bit::from_u64(24000000);
let (n, unit) = bit.get_exact_unit(true);
assert_eq!(3, n);
assert_eq!(Unit::MB, unit);use byte_unit::{Bit, Unit};
let bit = Bit::from_u64(24000000);
let (n, unit) = bit.get_exact_unit(false);
assert_eq!(24, n);
assert_eq!(Unit::Mbit, unit);Trait Implementations§
source§impl<'de> Deserialize<'de> for Bit
Available on crate feature serde only.
impl<'de> Deserialize<'de> for Bit
serde only.source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
source§impl Display for Bit
impl Display for Bit
source§fn fmt(&self, f: &mut Formatter<'_>) -> Result
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Formats the value using the given formatter.
Examples
use byte_unit::{Bit, Unit};
let bit = Bit::from_u64_with_unit(1555, Unit::Kbit).unwrap();
assert_eq!("1555000", bit.to_string());use byte_unit::{Bit, UnitType};
let bit_based_2 = Bit::from_u64(10240);
let bit_based_10 = Bit::from_u64(10000);
assert_eq!("10240", format!("{bit_based_2}"));
assert_eq!("10000", format!("{bit_based_10}"));
// with an exact unit
assert_eq!("10 Kib", format!("{bit_based_2:#}"));
assert_eq!("10 Kb", format!("{bit_based_10:#}"));
// with an exact unit, no spaces between the value and the unit
assert_eq!("10Kib", format!("{bit_based_2:-#}"));
assert_eq!("10Kb", format!("{bit_based_10:-#}"));
// with a width, left alignment
assert_eq!("10 Kib", format!("{bit_based_2:#10}"));
assert_eq!("10 Kb", format!("{bit_based_10:#10}"));
// with a width, right alignment
assert_eq!(" 10 Kib", format!("{bit_based_2:>#10}"));
assert_eq!(" 10 Kb", format!("{bit_based_10:>#10}"));
// with a width, right alignment, more spaces between the value and the unit
assert_eq!(" 10 Kib", format!("{bit_based_2:>+#10}"));
assert_eq!(" 10 Kb", format!("{bit_based_10:>+#10}"));use byte_unit::{Bit, UnitType};
let bit = Bit::from_u64(3211776);
assert_eq!("3211776", format!("{bit}"));
// with a unit, still precisely
assert_eq!("3136.5 Kib", format!("{bit:#}"));
// with a unit and a larger precision (default is 3), still precisely
assert_eq!("3.211776 Mb", format!("{bit:#.6}"));
// with a unit and a smaller precision (default is 3), still precisely
assert_eq!("3211776 b", format!("{bit:#.0}"));source§impl From<AdjustedBit> for Bit
impl From<AdjustedBit> for Bit
source§fn from(value: AdjustedBit) -> Self
fn from(value: AdjustedBit) -> Self
source§impl From<Bit> for AdjustedBit
impl From<Bit> for AdjustedBit
source§fn from(value: Bit) -> Self
fn from(value: Bit) -> Self
unit_type is set to UnitType::Both. See Bit::get_appropriate_unit.
source§impl Ord for Bit
impl Ord for Bit
source§impl PartialOrd for Bit
impl PartialOrd for Bit
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self and other) and is used by the <=
operator. Read more