#[derive(Debug, PartialEq)]
pub enum MyResult {
Tuple(i32,i32),
Message(String),
None
}
pub fn two_sum(list: &[i32], target: i32) -> MyResult {
if list.is_empty() {
return MyResult::Message("Cannot use two_sum on an empty list!".to_string());
}
let mut seen: std::collections::HashMap<i32,i32> = std::collections::HashMap::new();
for (index, &number) in list.iter().enumerate() {
if let Some(&prev_index) = seen.get(&number) {
return MyResult::Tuple(prev_index, index as i32);
}
seen.insert(target - number, index as i32);
}
MyResult::None
}