pub fn cmp_id(
        hash_a: &FileHash,
        a: &SubrangeType,
        hash_b: &FileHash,
        b: &SubrangeType,
    ) -> cmp::Ordering {
        match (a.ty(hash_a), b.ty(hash_b)) {
            (Some(ref ty_a), Some(ref ty_b)) => {
                let ord = Type::cmp_id(hash_a, ty_a, hash_b, ty_b);
                if ord != cmp::Ordering::Equal {
                    return ord;
                }
            }
            (Some(_), None) => {
                return cmp::Ordering::Less;
            }
            (None, Some(_)) => {
                return cmp::Ordering::Greater;
            }
            (None, None) => {}
        }
        a.lower.cmp(&b.lower).then_with(|| a.upper.cmp(&b.upper))
    }
/// Compare the identifying information of two types.
///
/// Subrange types are considered equal if the underlying type and bounds are equal.
///
/// This can be used to sort, and to determine if two types refer to the same definition
/// (even if there are differences in the definitions).
Compare the identifying information of two types.
Subrange types are considered equal if the underlying type and bounds are equal.

This can be used to sort, and to determine if two types refer to the same definition
(even if there are differences in the definitions).
Compare the identifying information of two types . Subrange types are considered equal if the underlying type and bounds are equal . This can be used to sort and to determine if two types refer to the same definition ( even if there are differences in the definitions ) .
pub fn cmp_id(
        hash_a: &FileHash,
        a: &SubrangeType,
        hash_b: &FileHash,
        b: &SubrangeType,
    ) -> cmp::Ordering {
        match (a.ty(hash_a), b.ty(hash_b)) {
            (Some(ref ty_a), Some(ref ty_b)) => {
                let ord = Type::cmp_id(hash_a, ty_a, hash_b, ty_b);
                if ord != cmp::Ordering::Equal {
                    return ord;
                }
            }
            (Some(_), None) => {
                return cmp::Ordering::Less;
            }
            (None, Some(_)) => {
                return cmp::Ordering::Greater;
            }
            (None, None) => {}
        }
        a.lower.cmp(&b.lower).then_with(|| a.upper.cmp(&b.upper))
    }
pub fn cmp_id ( hash_a : & FileHash , a : & SubrangeType , hash_b : & FileHash , b : & SubrangeType , ) -> cmp :: Ordering { match ( a . ty ( hash_a ) , b . ty ( hash_b ) ) { ( Some ( ref ty_a ) , Some ( ref ty_b ) ) => { let ord = Type :: cmp_id ( hash_a , ty_a , hash_b , ty_b ) ; if ord != cmp :: Ordering :: Equal { return ord ; } } ( Some ( _ ) , None ) => { return cmp :: Ordering :: Less ; } ( None , Some ( _ ) ) => { return cmp :: Ordering :: Greater ; } ( None , None ) => { } } a . lower . cmp ( & b . lower ) . then_with ( | | a . upper . cmp ( & b . upper ) ) }
Compare the identifying information of two types.
Compare the identifying information of two types .
hash_a
&FileHash
a
&SubrangeType
hash_b
&FileHash
b
&SubrangeType
hash_a
&FileHash
a
&SubrangeType
hash_b
&FileHash
b
&SubrangeType