set_theory 1.0.0

A comprehensive mathematical set theory library implementing standard set operations, multisets, and set laws verification
Documentation
//! # Equality Utilities
//!
//! Provides deep equality checking for nested sets.

use std::hash::Hash;

use crate::CustomSet;

/// Performs deep equality check for nested sets.
///
/// # Arguments
///
/// * `a` - First set
/// * `b` - Second set
///
/// # Returns
///
/// `true` if sets are deeply equal (including nested sets).
///
/// # Examples
///
/// ```rust
/// use set_theory::models::CustomSet;
/// use set_theory::utils::deep_equals;
///
/// let a = CustomSet::from(vec![1, 2, 3]);
/// let b = CustomSet::from(vec![3, 2, 1]);
/// assert!(deep_equals(&a, &b));
/// ```
pub fn deep_equals<T: Eq + Hash + Clone>(a: &CustomSet<T>, b: &CustomSet<T>) -> bool {
    a.equals(b)
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_deep_equals_basic() {
        let a = CustomSet::from(vec![1, 2, 3]);
        let b = CustomSet::from(vec![3, 2, 1]);
        assert!(deep_equals(&a, &b));
    }

    #[test]
    fn test_deep_equals_nested() {
        let inner1 = CustomSet::from(vec!['a', 'b']);
        let inner2 = CustomSet::from(vec!['b', 'a']);

        let a = CustomSet::from(vec![inner1.clone()]);
        let b = CustomSet::from(vec![inner2.clone()]);

        // Nested set equality depends on CustomSet's Eq implementation
        assert!(a.equals(&b));
    }
}