fn is_contained_in()

in amzn-smt-string-transformer/src/string_mappings.rs [380:399]


fn is_contained_in(pair1: (usize, usize), pair2: (usize, usize)) -> PairOverlap {
    // subtract 1 bc string index is one less than length
    let (start1, len1) = pair1;
    let (start2, len2) = pair2;
    let end1 = start1 + len1 - 1;
    let end2 = start2 + len2 - 1;
    if start1 > end2 || start2 > end1 {
        return PairOverlap::No;
    }

    // if the pairs are equal it'll return SecondFull but it doesn't matter
    if start1 <= start2 && end2 <= end1 {
        // 2nd pair entirely in first pair
        return PairOverlap::SecondFull;
    } else if start2 <= start1 && end1 <= end2 {
        // first pair entirely in 2nd pair
        return PairOverlap::FirstFull;
    }
    PairOverlap::Partial
}