From 54232c1833a506571f78e644d7a779a43475b06b Mon Sep 17 00:00:00 2001 From: "exercism-solutions-syncer[bot]" <211797793+exercism-solutions-syncer[bot]@users.noreply.github.com> Date: Fri, 29 Aug 2025 20:18:18 +0000 Subject: [PATCH] [Sync Iteration] rust/sublist/1 --- solutions/rust/sublist/1/src/lib.rs | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 solutions/rust/sublist/1/src/lib.rs diff --git a/solutions/rust/sublist/1/src/lib.rs b/solutions/rust/sublist/1/src/lib.rs new file mode 100644 index 0000000..89b17c6 --- /dev/null +++ b/solutions/rust/sublist/1/src/lib.rs @@ -0,0 +1,40 @@ +#[derive(Debug, PartialEq, Eq)] +pub enum Comparison { + Equal, + Sublist, + Superlist, + Unequal, +} + +pub fn sublist(first_list: &[i32], second_list: &[i32]) -> Comparison { + if first_list == second_list { + return Comparison::Equal; + } + + if first_list.len() < second_list.len() { + let pot_sublist = first_list; + let superlist = second_list; + + let slices = (0..=(superlist.len() - pot_sublist.len())).map(|i| &superlist[i..i + pot_sublist.len()]); + for slice in slices { + if slice == pot_sublist { + println!("Sublist!"); + return Comparison::Sublist; + } + } + } else { + let pot_sublist = second_list; + let superlist = first_list; + + let slices = (0..=(superlist.len() - pot_sublist.len())).map(|i| &superlist[i..i + pot_sublist.len()]); + for slice in slices { + println!("{slice:?}"); + if slice == pot_sublist { + println!("Sublist!"); + return Comparison::Superlist; + } + } + } + + Comparison::Unequal +}