Never will be, here is a cursed function I wrote a few weeks ago though 👀
async fn perform<'a, Data>( data: Data, context: web::Data<TinyBoardsContext>, apub_data: tinyboards_federation::config::Data<TinyBoardsContext>, path: web::Path<Data::Route>, req: HttpRequest, ) -> Result<HttpResponse, TinyBoardsError> where Data: Perform<'a> + SendActivity<Response = <Data as Perform<'a>>::Response> + Clone + Deserialize<'a> + Send + 'static, { let auth_header = get_auth(&req); let res = data .clone() .perform(&context, path.into_inner(), auth_header) .await?; SendActivity::send_activity(&data, &res, &apub_data, auth_header).await?; Ok(HttpResponse::Ok().json(res)) }