I think the answer is: if your intention is to reassign of some member of your struct then you should use mutable (for the primitive type Int the expression cntr+=1 is reassignment, we need mutable) but there is no reassignment for callsat in the above example, you only mutate its content. But maybe some expert will explain you better.
read this: Assignment and mutation - #4 by StefanKarpinski
and this: Julia Learning Circle: Memory Allocations and Garbage Collection · W.
1 Like