rumpsteak
pub async fn session<'r, R: Role, S: Session<'r, R>, T, F>( role: &'r mut R, f: impl FnOnce(S) -> F) -> T where F: Future<Output = (T, End<'r>)>,