Hi Timo,
With Rule
the pattern will be evaluated prior to application of the rule, so any definition of i
that is in scope will be used rather than the value matching the pattern.
x = 1; i = 1;
{1, 2, 3} /. i_Integer -> {i, x++}
(* {{1, 1}, {1, 1}, {1, 1}} *)