struct WithRes<R, Fut: Future<Output=R>> {
res_ptr: *mut R,
fut: Fut
}
impl<R, Fut: Future<Output=R>> WithRes<R, Fut> {
fn new(res_ptr: *mut R, fut: Fut) -> Self {
Self { res_ptr, fut }
}
}
impl<R, Fut: Future<Output=R>> Future for WithRes<R, Fut> {
type Output = ();
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
let this = unsafe { self.get_unchecked_mut() };
let mut pinned = unsafe { Pin::new_unchecked(&mut this.fut) };
match pinned.as_mut().poll(cx) {
Poll::Pending => Poll::Pending,
Poll::Ready(res) => {
unsafe { this.res_ptr.write(res) };
Poll::Ready(())
}
}
}
}
Корутина (сопрограмма) — это блок кода, который работает асинхронно, то есть по очереди.
получить запрос -> отправить его в очередь -> встать в ожидание ответа из очереди
Вопросов у меня достаточно много, например, как создать общие зависимости для двух проектов, как эти проекты собирать под любую ОС? Но для начала, хочу собрать хотя бы сервер.
Я задал этот вопрос, чтобы прояснить ситуацию, так как разные ссылки в Гугле дают разные ответы, но на форуме ответы тоже разделились. Выше мне посоветовали скачать библиотеки без менеджера, Вы советуете его использовать.