pub fn process<T, I, P, F, R>( init: I, process_data: P, finalize: F, render: R, ) -> Result<(), Box<dyn Error>>where I: FnOnce() -> Result<T, Box<dyn Error>>, P: FnOnce(T) -> Result<T, Box<dyn Error>>, F: FnOnce(T) -> Result<Context, Box<dyn Error>>, R: FnOnce(Context) -> Result<Context, Box<dyn Error>>,