← run

rs-04-group-consecutive

1.000
7/7 tests· algorithms

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.