-
Couldn't load subscription status.
- Fork 13.9k
Open
Labels
C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFCT-libs-apiRelevant to the library API team, which will review and decide on the PR/issue.Relevant to the library API team, which will review and decide on the PR/issue.WG-asyncWorking group: Async & awaitWorking group: Async & await
Description
Feature gate: #![feature(local_waker)]
This is a tracking issue for support for local wakers on Context. This allows libraries to hold non thread safe data on their wakers, guaranteeing at compile time that the wakers will not be sent across threads. It includes a ContextBuilder type for building contexts.
Public API
impl Context {
fn local_waker(&self) -> &LocalWaker;
}
impl<'a> ContextBuilder<'a> {
fn from_waker(waker: &'a Waker) -> ContextBuilder<'a>;
fn waker(self, waker: &'a Waker) -> ContextBuilder<'a>;
fn local_waker(self, local_waker: &'a LocalWaker,) -> ContextBuilder<'a>
fn build(self) -> Context;
}
impl From<&mut Context> for ContextBuilder;
pub trait LocalWake {
fn wake(self: Rc<Self>);
}Steps / History
- Implementation:
- Have the @rust-lang/wg-async approve the API
- Final comment period (FCP)1
- Stabilization PR
Unresolved Questions
- Should runtimes be allowed to not define a waker?
Relevant links
Footnotes
runiq, CathalMullan, A248 and songzhijoseluis and CathalMullan
Metadata
Metadata
Assignees
Labels
C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFCT-libs-apiRelevant to the library API team, which will review and decide on the PR/issue.Relevant to the library API team, which will review and decide on the PR/issue.WG-asyncWorking group: Async & awaitWorking group: Async & await