in general I prefer avoiding side effects like this one (hasFieldIgnored gets mutated as a side effect that we check here)
can readOneStruct(...) return a boolean instead?