It looks like most of the work to support visiting borrowed data for some concrete lifetime (instead of just for any lifetime) is already done, the Visit trait just doesn't surface a lifetime that implementors can use to stash values across calls.
I at least find introducing lifetimes late in an API design can get a bit hairy so it might something to explore sooner rather than later 🙂