Crate quantor

Source
Expand description

§quantor

quantor is a logic-oriented utility crate that provides expressive, composable tools for reasoning over collections.

It includes:

  • Logical quantifiers (forall, exists, none, exactly_one, etc.)
  • Predicate-based selection (select_where, select_unique, select_duplicates)
  • Structural analysis (pairwise, all_equal)
  • Counting and duplicate detection (counter)
  • Assertion macros (assert_forall!, assert_unique!, etc.)

This crate focuses on enabling clear, declarative logic over iterables. It favors minimal, well-scoped functions that can be easily composed with custom predicates or reused across testing, validation, and filtering tasks.

§Example

use quantor::{forall, select_where};

let values = vec![2, 4, 6];
 
assert!(forall(&values, |x| x % 2 == 0));
 
let evens = select_where(&values, |x| x % 2 == 0);
assert_eq!(evens.as_slice(), [&2, &4, &6]);

All tools are generic over any IntoIterator, making them flexible across slices, vectors, sets, and more.

Re-exports§

pub use quantifiers::*;
pub use quantor_ext::*;

Modules§

prelude
quantifiers
quantor: Quantifiers
quantor_ext
quantor: QuantorExt

Macros§

assert_duplicates
Asserts that the input contains at least one duplicate.
assert_exists
Asserts that at least one element satisfies the predicate.
assert_forall
Asserts that all elements in the collection satisfy the given predicate.
assert_none
Asserts that no elements in the iterable satisfy the given predicate.
assert_pairwise
Asserts that a binary predicate holds for every adjacent pair in a sequence.
assert_unique
Asserts that all elements are unique.
debug_assert_duplicates
Debug-only version of assert_duplicates!. Panics if no duplicates are found, but only in debug builds.
debug_assert_exists
Debug-only version of assert_exists!. Panics if no element satisfies the predicate, but only in debug builds.
debug_assert_forall
Debug-only version of assert_forall!. Panics if any element fails the predicate, but only in debug builds.
debug_assert_none
Debug-only version of assert_none!. Panics if any element satisfies the predicate, but only in debug builds.
debug_assert_pairwise
Debug-only version of assert_pairwise!. Panics if any adjacent pair fails the predicate, but only in debug builds.
debug_assert_unique
Debug-only version of assert_unique!. Panics if any duplicates are found, but only in debug builds.
debug_duplicates
Logs all duplicate elements in the sequence. Does not panic. Active only in debug builds.
debug_exists
Logs a message if no element matches the predicate. Does not panic. Active only in debug builds.
debug_forall
Logs all elements that fail the predicate. Does not panic. Active only in debug builds.
debug_none
Logs all elements that unexpectedly match the predicate. Does not panic. Active only in debug builds.
debug_pairwise
Logs all adjacent pairs that violate the predicate. Does not panic. Active only in debug builds.
debug_unique
Logs all repeated elements in the sequence. Does not panic. Active only in debug builds.
quantify
Evaluates logical quantifiers using mathematical-style syntax over iterables.
select
Extracts values from an iterator using declarative logic-based syntax.