Представьте, что у вас бесконечная последовательность чисел, повторяющаяся.Это значительно облегчает проблему:
fn main() {
let d = [1, 2, 3, 4, 5, 6, 7, 8];
let mut numbers = d.iter().cycle();
let max = (0..d.len())
.map(|_| {
let sum1: i32 = numbers.by_ref().take(3).sum();
let sum2: i32 = numbers.by_ref().take(5).sum();
// Skip one so the next iteration is offset by one
numbers.next();
(sum1, sum2)
})
.map(|(sum1, sum2)| i32::abs(3 * sum1 + 5 * sum2))
.max();
println!("{:?}", max);
}