fn meet(&self, other: &Self) -> Option<Self> {
        if self.id == other.id {
            let resulting_projection = self
                .dereferenced_projection
                .iter()
                .zip(other.dereferenced_projection.iter())
                .map(|(e1, e2)| if e1 == e2 { e1.clone() } else { None })
                .collect_vec();
            if resulting_projection.iter().any(|e| e.is_some()) {
                Some(ProvInfo {
                    id: self.id,
                    dereferenced_projection: resulting_projection,
                    exact: self.exact && other.exact,
                })
            } else {
                None
            }
        } else {
            None
        }
    }
/// Merge two constraints to find a constraint that satisfies both inputs.
///
/// This method returns nothing if no columns are in common (either because
/// difference sources are identified, or just no columns in common) and it
/// intersects bindings and the `exact` bit.
Merge two constraints to find a constraint that satisfies both inputs.
This method returns nothing if no columns are in common (either because
difference sources are identified, or just no columns in common) and it
intersects bindings and the `exact` bit.
Merge two constraints to find a constraint that satisfies both inputs . This method returns nothing if no columns are in common ( either because difference sources are identified or just no columns in common ) and it intersects bindings and the ` exact ` bit .
fn meet(&self, other: &Self) -> Option<Self> {
        if self.id == other.id {
            let resulting_projection = self
                .dereferenced_projection
                .iter()
                .zip(other.dereferenced_projection.iter())
                .map(|(e1, e2)| if e1 == e2 { e1.clone() } else { None })
                .collect_vec();
            if resulting_projection.iter().any(|e| e.is_some()) {
                Some(ProvInfo {
                    id: self.id,
                    dereferenced_projection: resulting_projection,
                    exact: self.exact && other.exact,
                })
            } else {
                None
            }
        } else {
            None
        }
    }
fn meet ( & self , other : & Self ) -> Option < Self > { if self . id == other . id { let resulting_projection = self . dereferenced_projection . iter ( ) . zip ( other . dereferenced_projection . iter ( ) ) . map ( | ( e1 , e2 ) | if e1 == e2 { e1 . clone ( ) } else { None } ) . collect_vec ( ) ; if resulting_projection . iter ( ) . any ( | e | e . is_some ( ) ) { Some ( ProvInfo { id : self . id , dereferenced_projection : resulting_projection , exact : self . exact && other . exact , } ) } else { None } } else { None } }
Merge two constraints to find a constraint that satisfies both inputs.
Merge two constraints to find a constraint that satisfies both inputs .
&self
other
&Self
&self
other
&Self