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(())
}
}
}
}
Корутина (сопрограмма) — это блок кода, который работает асинхронно, то есть по очереди.
Про уникальность. Seastar — сильное решение, но оно ограничено C++ и строго следует Shared-Nothing архитектуре. У меня другая модель и другие цели. Не утверждаю, что моя разработка полностью уникальна, но некоторые, действительно, уникальные находки, на мой взгляд, заслуживают внимания.
Про конференции. Я выступал — да, на школьных и университетских. В первом случае понятно, почему приходилось упрощать, во втором — мой научный руководитель тоже просил максимально снижать порог вхождения. Как показала практика: не зря — из 30 человек доклад не понял никто. Поэтому опыт есть, но писать умею только сильно простую литературу. Боюсь прогадать со сложность.
Про статьи. Частично согласен, но не считаю аргумент "проще" весомым. Тем более, что работы отличаются слишком сильно, чтобы можно было однозначно оценить их сложность. Paper оформляется в знакомом мне стиле и не требует упрощений. Со статьёй я могу оказаться "в пролете", если не угадаю сложность.
Про стиль. На Хабре действительно много уникальных подходов к подаче материала, так что совет "прочитать N статей и писать похоже" скорее вредный.
Про "где искать". С этим сложнее. В университете, дома или на улице я не встречал людей, кто интересуется low-latency и асинхронностью на глубоком уровне. Поэтому и обратился сюда — надеялся на более конкретные ориентиры, может, примеры форумов, дискорд-серверов, телеграм-чатов и т.п.
Про публикации. Также рассматривал Medium и dev.to — они открытые, и там легче дотянуться до англоязычной аудитории.