finds.dev← search

// the find

BurntSushi/quickcheck

★ 2,766 · Rust · Unlicense · updated Apr 2026

Automated property based testing for Rust (with shrinking).

A Rust port of Haskell's QuickCheck — property-based testing with automatic shrinking. You write properties, it generates random inputs, and when it finds a failure it shrinks it down to the smallest reproducing case. Aimed at Rust developers who want more than hand-written test cases.

Shrinking actually works well: the binary-search strategy on numbers and lists consistently produces minimal counter-examples rather than the enormous random blob that failed. The `Testable` trait design is clean — returning `TestResult` directly from a property to discard inputs is more explicit than Haskell's `==>` and easier to grep. The `#[quickcheck]` attribute macro removes boilerplate without hiding what's happening. Maintained by BurntSushi, so it's not going to be abandoned.

Shrinking is weaker than `proptest` — it's acknowledged in the README and the recommendation to switch is right there. If you're testing anything with complex structure (custom enums, nested types), you'll hit the limits quickly and spend time fighting it. No `Coarbitrary`, so you can't generate random functions, which cuts off a whole class of properties. Hard 8-parameter function limit is an arbitrary ceiling that will surprise you right when you don't want to refactor. The crate considers `Arbitrary` implementations to be internal details it can change in semver-compatible releases, meaning a minor version bump can legitimately break your test suite by finding new failures.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →