?play
use std::{cell::RefCell, marker::PhantomData, slice::Iter};
#[derive(Default)]
struct Server<O> {
phantom_o: PhantomData<fn() -> O>,
}
impl<O> Server<O> {
fn oops(&self, _o: O) {}
}
#[tokio::main]
async fn main() {
let server = Server::<IterWrapper<Iter<usize>>> {
phantom_o: Default::default(),
};
tokio::spawn(async move {
let v = vec![];
let x = IterWrapper::new(v.iter());
server.oops(x);
});
}
pub struct IterWrapper<I>(RefCell<I>);
impl<I> IterWrapper<I> {
pub fn new(iterator: I) -> Self {
Self(RefCell::new(iterator))
}
}