diff --git a/Cargo.lock b/Cargo.lock index 28fed612..f29b3d09 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -16,9 +16,6 @@ name = "arbitrary" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" -dependencies = [ - "derive_arbitrary", -] [[package]] name = "bytesize" @@ -37,17 +34,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "derive_arbitrary" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "env_logger" version = "0.8.4" diff --git a/Cargo.toml b/Cargo.toml index a71ef63c..2b1fdef1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ arbitrary = ["dep:arbitrary"] serde = ["dep:serde"] [dependencies] -arbitrary = { version = "1", features = ["derive"], optional = true } +arbitrary = { version = "1", optional = true } serde = { version = "1", optional = true } [dev-dependencies] diff --git a/src/arbitrary.rs b/src/arbitrary.rs new file mode 100644 index 00000000..54b4e388 --- /dev/null +++ b/src/arbitrary.rs @@ -0,0 +1,13 @@ +use arbitrary::{Arbitrary, Unstructured}; + +use crate::ByteSize; + +impl Arbitrary<'_> for ByteSize { + fn arbitrary(u: &mut Unstructured<'_>) -> arbitrary::Result { + Ok(ByteSize(u64::arbitrary(u)?)) + } + + fn size_hint(depth: usize) -> (usize, Option) { + u64::size_hint(depth) + } +} diff --git a/src/lib.rs b/src/lib.rs index 050122d0..11f838a3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -40,6 +40,8 @@ //! assert_eq!(ByteSize::gb(996), minus); //! ``` +#[cfg(feature = "arbitrary")] +mod arbitrary; mod parse; #[cfg(feature = "serde")] mod serde; @@ -136,7 +138,6 @@ pub fn pib>(size: V) -> u64 { /// Byte size representation #[derive(Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash, Default)] -#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] pub struct ByteSize(pub u64); impl ByteSize { @@ -400,7 +401,7 @@ mod property_tests { } fn to_string_never_large(size: ByteSize) -> bool { - size.to_string().len() < 10 + size.to_string().len() < 11 } // // currently fails on input like "14.0 EiB"