replace boolean with lazy iteration
replace boolean with lazy iteration

Should probably check how this performs, but it's always nicer to
track just a bit less mutable state.

aidancully/rust,aidancully/rust,aidancully/rust,graydon/rust,graydon/rust,aidancully/rust,aidancully/rust,graydon/rust,graydon/rust,graydon/rust,graydon/rust,aidancully/rust