Removed unused bloat

This commit is contained in:
Андреев Григорий 2026-03-10 14:23:22 +03:00
parent 00cf8bfb4a
commit 8533941047

View File

@ -1,6 +1,3 @@
#![feature(type_alias_impl_trait)]
use std::prelude::v1::define_opaque;
mod samplers;
mod invoking_llms;
mod db;
@ -18,7 +15,6 @@ use std::future::Future;
use std::net::SocketAddr;
use std::pin::Pin;
use std::sync::OnceLock;
use std::task::{Context, Poll};
use tera::{Tera};
use tower_http::services::ServeDir;
@ -94,106 +90,6 @@ async fn website_authentication_with_cookie(
}
}
enum AuthResponseFutureState<Fut> {
Redirect(Option<Response>),
Running(Fut),
Done,
}
struct AuthResponseFuture<Fut> {
state: AuthResponseFutureState<Fut>,
}
impl<Fut> AuthResponseFuture<Fut> {
fn redirect(response: Response) -> Self {
Self {
state: AuthResponseFutureState::Redirect(Some(response)),
}
}
fn running(fut: Fut) -> Self {
Self {
state: AuthResponseFutureState::Running(fut),
}
}
}
impl<Fut, Res> Future for AuthResponseFuture<Fut>
where
Fut: Future<Output = Res>,
Res: IntoResponse,
{
type Output = Response;
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
let this = unsafe { self.get_unchecked_mut() };
match &mut this.state {
AuthResponseFutureState::Redirect(response) => {
let response = response
.take()
.expect("AuthFuture polled after completion");
this.state = AuthResponseFutureState::Done;
Poll::Ready(response)
}
AuthResponseFutureState::Running(fut) => {
let fut = unsafe { Pin::new_unchecked(fut) };
match fut.poll(cx) {
Poll::Ready(res) => {
this.state = AuthResponseFutureState::Done;
Poll::Ready(res.into_response())
}
Poll::Pending => Poll::Pending,
}
}
AuthResponseFutureState::Done => panic!("AuthFuture polled after completion"),
}
}
}
pub enum EitherResponseOrRedirect<Res>
where
Res: IntoResponse,
{
Redirect(Response),
Response(Res),
}
impl<Res> IntoResponse for EitherResponseOrRedirect<Res>
where Res: IntoResponse,
{
fn into_response(self) -> Response {
match self {
EitherResponseOrRedirect::Redirect(resp) => resp,
EitherResponseOrRedirect::Response(res) => res.into_response(),
}
}
}
// Define a trait using RPITIT (stable since 1.75)
trait AsyncWrapper<Res> {
fn call(self) -> impl Future<Output = Option<Res>>;
}
impl<Res, F, Fut> AsyncWrapper<Res> for F
where
F: Fn() -> Fut,
Fut: Future<Output = Res> + 'static,
{
fn call(self) -> impl Future<Output = Option<Res>> {
async move { Some(self().await) }
}
}
// Your function now returns impl the trait (no nesting in sig)
fn wrap_async<F, Fut, Res>(async_fn: F) -> impl AsyncWrapper<Res>
where
F: Fn() -> Fut + 'static,
Fut: Future<Output = Res> + 'static,
Res: 'static,
{
async_fn
}
fn axum_handler_with_auth<T, H, Res>(
handler: H,