hydroflow_plus/
runtime_context.rs

1use std::marker::PhantomData;
2
3use hydroflow::scheduled::context::Context;
4use proc_macro2::TokenStream;
5use quote::quote;
6use stageleft::runtime_support::FreeVariable;
7
8#[derive(Clone)]
9pub struct RuntimeContext<'a> {
10    _phantom: PhantomData<&'a mut &'a ()>,
11}
12
13impl RuntimeContext<'_> {
14    pub fn new() -> Self {
15        Self {
16            _phantom: PhantomData,
17        }
18    }
19}
20
21impl Copy for RuntimeContext<'_> {}
22
23impl Default for RuntimeContext<'_> {
24    fn default() -> Self {
25        Self::new()
26    }
27}
28
29impl<'a> FreeVariable<&'a Context> for RuntimeContext<'a> {
30    fn to_tokens(self) -> (Option<TokenStream>, Option<TokenStream>) {
31        (None, Some(quote!(&context)))
32    }
33}