Sha256: ed00921f3cdbda63cae04b671ce52c9c2fee36653c6d7905107d8a85b3d94324

Contents?: true

Size: 575 Bytes

Versions: 396

Compression:

Stored size: 575 Bytes

Contents

#[derive(PartialEq, Eq, Debug)]
pub enum Comparison {
    Equal,
    Sublist,
    Superlist,
    Unequal,
}

pub fn sublist<T: PartialEq>(a: &[T], b: &[T]) -> Comparison {
    if a == b {
        Comparison::Equal
    } else if contains(a, b) {
        Comparison::Superlist
    } else if contains(b, a) {
        Comparison::Sublist
    } else {
        Comparison::Unequal
    }
}

fn contains<T: PartialEq>(a: &[T], b: &[T]) -> bool {
    if a.len() < b.len() {
        return false;
    }

    if a.starts_with(b) {
        return true;
    }

    contains(&a[1..], b)
}

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.179 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.178 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.177 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.176 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.175 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.174 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.173 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.172 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.171 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.170 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.169 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.167 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.166 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.165 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.164 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.163 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.162 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.161 tracks/rust/exercises/sublist/example.rs
trackler-2.2.1.160 tracks/rust/exercises/sublist/example.rs