I would say, that I am fairly advanced with rust and do understand the borrow checker in most situation. In this case however, I can’t get my head around.

I try to solve a CodeSignal task. My solution looks like this (warning spoiler to everyone who wants to solve `digitsProduct`

on her/his own!!!)

```
fn digitsProduct(product: i32) -> i32 {
(2..=product/2)
.flat_map(|x|
(2..=product/2)
.filter(|y| x * y == product)
.map(|y| (x, y)))
.map(|(a, b)| a*10+b)
.min().unwrap()
}
fn main() {
assert_eq!(26, digitsProduct(12));
}
```

It complains that `x`

does not live long enough, but `x`

is a i32! It is copyable!

I never encountered a borrow error for trivial-copyable types. What am I missing?