assert!(expand.is_empty())
}
responses.push(resp);
- if let Some(unprepared) = unprepared {
+ PrepareUpdatesBuffer::only_unprepared_with(unprepared, ||{
st.flush(ig,how,&who)?;
- let mut prepub = PrepareUpdatesBuffer::new(ig, None);
- unprepared(&mut prepub);
- prepub.finish();
- }
+ Ok::<_,ME>(ig)
+ })?;
}
if let Some(ref mut st) = uh_auth {
flush_uh(st,igu)?;
})
});
- if let Some(uu) = uu {
- let ig = igu.by_mut(Authorisation::promise_any());
- let mut prepub = PrepareUpdatesBuffer::new(ig, None);
- uu(&mut prepub);
- prepub.finish();
- }
+ PrepareUpdatesBuffer::only_unprepared_with(uu, ||Ok::<_,Void>(
+ igu.by_mut(Authorisation::promise_any())
+ )).void_unwrap();
ok?
}
}
pub fn only_unprepared(ig: &'r mut Instance, unprepared: UnpreparedUpdates) {
- if let Some(unprepared) = unprepared {
+ Self::only_unprepared_with(unprepared, ||Ok::<_,Void>(ig))
+ .void_unwrap();
+ }
+
+ #[throws(E)]
+ pub fn only_unprepared_with<'i,F,E>(unprepared: UnpreparedUpdates, igf: F)
+ where F: FnOnce() -> Result<&'i mut Instance, E>
+ {
+ if unprepared.is_some() {
+ let ig = igf()?;
let mut prepub = PrepareUpdatesBuffer::new(ig, None);
- unprepared(&mut prepub);
+ prepub.add_unprepared(unprepared);
prepub.finish();
}
}