use std::marker::PhantomData;
use rspc_procedure::State;
use crate::ProcedureMeta;
pub struct Extension<TCtx, TInput, TResult> {
pub(crate) setup: Option<Box<dyn FnOnce(&mut State, ProcedureMeta) + 'static>>,
pub(crate) phantom: PhantomData<fn() -> (TCtx, TInput, TResult)>,
}
impl<TCtx, TInput, TResult> Extension<TCtx, TInput, TResult> {
pub fn new() -> Self {
Self {
setup: None,
phantom: PhantomData,
}
}
pub fn setup(mut self, func: impl FnOnce(&mut State, ProcedureMeta) + 'static) -> Self {
self.setup = Some(Box::new(func));
self
}
}