From 005f066cf484f3834a9b289d1dfc90d0c4f9ec1d Mon Sep 17 00:00:00 2001 From: Rob Ede Date: Sun, 9 Feb 2025 22:50:07 +0000 Subject: [PATCH 1/2] feat: remove derive feature from arbitrary support --- Cargo.lock | 14 -------------- Cargo.toml | 2 +- src/arbitrary.rs | 13 +++++++++++++ src/lib.rs | 3 ++- 4 files changed, 16 insertions(+), 16 deletions(-) create mode 100644 src/arbitrary.rs diff --git a/Cargo.lock b/Cargo.lock index 28fed61..f29b3d0 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 a71ef63..2b1fdef 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 0000000..54b4e38 --- /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 050122d..ae50d11 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 { From 81da831db27e01bc27cc900fd307f51af997fa2f Mon Sep 17 00:00:00 2001 From: Rob Ede Date: Wed, 12 Feb 2025 01:38:04 +0000 Subject: [PATCH 2/2] test: expand allowed string lengths in prop test turns out 1018.0 PiB can be generated --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index ae50d11..11f838a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -401,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"