fn embedded_value_equality(ccx: &CastContext, l: &ScalarType, r: &ScalarType) -> bool {
        use ScalarType::*;
        match (l, r) {
            (Array(l), Array(r)) => embedded_value_equality(&ccx, &l, &r),
            (
                List {
                    element_type: l,
                    custom_oid: oid_l,
                },
                List {
                    element_type: r,
                    custom_oid: oid_r,
                },
            )
            | (
                Map {
                    value_type: l,
                    custom_oid: oid_l,
                },
                Map {
                    value_type: r,
                    custom_oid: oid_r,
                },
            ) => oid_l == oid_r && embedded_value_equality(&ccx, &l, &r),
            (l, r) if ccx == &Implicit => l.base_eq(r),
            (l, r) => l == r,
        }
    }
// Determines if types are equal in a way that does not require casting.
Determines if types are equal in a way that does not require casting.
Determines if types are equal in a way that does not require casting .
fn embedded_value_equality(ccx: &CastContext, l: &ScalarType, r: &ScalarType) -> bool {
        use ScalarType::*;
        match (l, r) {
            (Array(l), Array(r)) => embedded_value_equality(&ccx, &l, &r),
            (
                List {
                    element_type: l,
                    custom_oid: oid_l,
                },
                List {
                    element_type: r,
                    custom_oid: oid_r,
                },
            )
            | (
                Map {
                    value_type: l,
                    custom_oid: oid_l,
                },
                Map {
                    value_type: r,
                    custom_oid: oid_r,
                },
            ) => oid_l == oid_r && embedded_value_equality(&ccx, &l, &r),
            (l, r) if ccx == &Implicit => l.base_eq(r),
            (l, r) => l == r,
        }
    }
fn embedded_value_equality ( ccx : & CastContext , l : & ScalarType , r : & ScalarType ) -> bool { use ScalarType :: * ; match ( l , r ) { ( Array ( l ) , Array ( r ) ) => embedded_value_equality ( & ccx , & l , & r ) , ( List { element_type : l , custom_oid : oid_l , } , List { element_type : r , custom_oid : oid_r , } , ) | ( Map { value_type : l , custom_oid : oid_l , } , Map { value_type : r , custom_oid : oid_r , } , ) => oid_l == oid_r && embedded_value_equality ( & ccx , & l , & r ) , ( l , r ) if ccx == & Implicit => l . base_eq ( r ) , ( l , r ) => l == r , } }
Determines if types are equal in a way that does not require casting.
Determines if types are equal in a way that does not require casting .
ccx
&CastContext
l
&ScalarType
r
&ScalarType
ccx
&CastContext
l
&ScalarType
r
&ScalarType