rs-04-group-consecutive
1.000
Proposed solution
```rust
pub fn group_consecutive<T: PartialEq + Clone>(items: &[T]) -> Vec<(T, usize)> {
if items.is_empty() {
return vec![];
}
let mut result = Vec::new();
let mut i = 0;
while i < items.len() {
let current_value = &items[i];
let mut count = 0;
let mut j = i;
// Count consecutive equal elements
while j < items.len() && items[j] == *current_value {
count += 1;
j += 1;
}
// Add the run to result
result.push((current_value.clone(), count));
// Move index to the start of the next run
i = j;
}
result
}
```Test output (stdout)
running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s running 7 tests ....... test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
System prompt
You are an expert programmer. Solve the task exactly as specified. Output your solution as fenced code blocks using the required file name(s) and the exact function/type signatures requested. Prefer correctness; do not include prose outside code unless asked.