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.