lattices_macro 0.5.7

Procedural macros for the `lattices` crate.
Documentation
---
source: lattices_macro/src/lib.rs
expression: "prettyplease::unparse(&parse_quote! { # derive_lattice })"
---
impl lattices::Merge<SimilarFields> for SimilarFields
where
    Max<usize>: lattices::Merge<Max<usize>>,
    Max<usize>: lattices::Merge<Max<usize>>,
    Max<usize>: lattices::Merge<Max<usize>>,
{
    fn merge(&mut self, other: SimilarFields) -> bool {
        let mut changed = false;
        changed |= lattices::Merge::merge(&mut self.a, other.a);
        changed |= lattices::Merge::merge(&mut self.b, other.b);
        changed |= lattices::Merge::merge(&mut self.c, other.c);
        changed
    }
}
impl ::core::cmp::PartialEq<SimilarFields> for SimilarFields
where
    Max<usize>: ::core::cmp::PartialEq<Max<usize>>,
    Max<usize>: ::core::cmp::PartialEq<Max<usize>>,
    Max<usize>: ::core::cmp::PartialEq<Max<usize>>,
{
    fn eq(&self, other: &SimilarFields) -> bool {
        if !::core::cmp::PartialEq::eq(&self.a, &other.a) {
            return false;
        }
        if !::core::cmp::PartialEq::eq(&self.b, &other.b) {
            return false;
        }
        if !::core::cmp::PartialEq::eq(&self.c, &other.c) {
            return false;
        }
        true
    }
}
impl ::core::cmp::PartialOrd<SimilarFields> for SimilarFields
where
    Max<usize>: ::core::cmp::PartialOrd<Max<usize>>,
    Max<usize>: ::core::cmp::PartialOrd<Max<usize>>,
    Max<usize>: ::core::cmp::PartialOrd<Max<usize>>,
{
    fn partial_cmp(
        &self,
        other: &SimilarFields,
    ) -> ::core::option::Option<::core::cmp::Ordering> {
        let mut self_any_greater = false;
        let mut othr_any_greater = false;
        match ::core::cmp::PartialOrd::partial_cmp(&self.a, &other.a)? {
            ::core::cmp::Ordering::Less => {
                othr_any_greater = true;
            }
            ::core::cmp::Ordering::Greater => {
                self_any_greater = true;
            }
            ::core::cmp::Ordering::Equal => {}
        }
        if self_any_greater && othr_any_greater {
            return ::core::option::Option::None;
        }
        match ::core::cmp::PartialOrd::partial_cmp(&self.b, &other.b)? {
            ::core::cmp::Ordering::Less => {
                othr_any_greater = true;
            }
            ::core::cmp::Ordering::Greater => {
                self_any_greater = true;
            }
            ::core::cmp::Ordering::Equal => {}
        }
        if self_any_greater && othr_any_greater {
            return ::core::option::Option::None;
        }
        match ::core::cmp::PartialOrd::partial_cmp(&self.c, &other.c)? {
            ::core::cmp::Ordering::Less => {
                othr_any_greater = true;
            }
            ::core::cmp::Ordering::Greater => {
                self_any_greater = true;
            }
            ::core::cmp::Ordering::Equal => {}
        }
        if self_any_greater && othr_any_greater {
            return ::core::option::Option::None;
        }
        ::core::option::Option::Some(
            match (self_any_greater, othr_any_greater) {
                (false, false) => ::core::cmp::Ordering::Equal,
                (false, true) => ::core::cmp::Ordering::Less,
                (true, false) => ::core::cmp::Ordering::Greater,
                (true, true) => ::core::unreachable!(),
            },
        )
    }
}
impl lattices::LatticeOrd<SimilarFields> for SimilarFields
where
    Max<usize>: ::core::cmp::PartialOrd<Max<usize>>,
    Max<usize>: ::core::cmp::PartialOrd<Max<usize>>,
    Max<usize>: ::core::cmp::PartialOrd<Max<usize>>,
{}
impl lattices::IsBot for SimilarFields
where
    Max<usize>: lattices::IsBot,
    Max<usize>: lattices::IsBot,
    Max<usize>: lattices::IsBot,
{
    fn is_bot(&self) -> bool {
        if !lattices::IsBot::is_bot(&self.a) {
            return false;
        }
        if !lattices::IsBot::is_bot(&self.b) {
            return false;
        }
        if !lattices::IsBot::is_bot(&self.c) {
            return false;
        }
        true
    }
}
impl lattices::IsTop for SimilarFields
where
    Max<usize>: lattices::IsTop,
    Max<usize>: lattices::IsTop,
    Max<usize>: lattices::IsTop,
{
    fn is_top(&self) -> bool {
        if !lattices::IsTop::is_top(&self.a) {
            return false;
        }
        if !lattices::IsTop::is_top(&self.b) {
            return false;
        }
        if !lattices::IsTop::is_top(&self.c) {
            return false;
        }
        true
    }
}
impl lattices::LatticeFrom<SimilarFields> for SimilarFields
where
    Max<usize>: lattices::LatticeFrom<Max<usize>>,
    Max<usize>: lattices::LatticeFrom<Max<usize>>,
    Max<usize>: lattices::LatticeFrom<Max<usize>>,
{
    fn lattice_from(other: SimilarFields) -> Self {
        Self {
            a: lattices::LatticeFrom::lattice_from(other.a),
            b: lattices::LatticeFrom::lattice_from(other.b),
            c: lattices::LatticeFrom::lattice_from(other.c),
        }
    }
}