pub fn build_fn<F: FnOnce(&mut G, G::Block) -> Result<(R, G::Block)>, G: Func, R>( f: F, ) -> BuildFn<F>