It was like: start refactoring; code broken for 2 days; spend some intimate time with rustc (including compiler bugs); add and remove lifetimes everywhere until success; finally prune lifetimes down to the minimum and come out with one massive commit :D