ContextBuilder — Context 인스턴스 생성 빌더

ContextBuilder — Context 인스턴스 생성 빌더

ContextBuilderLocalWaker를 지원하는 Context 인스턴스를 만들기 위한 빌더예요. nightly 전용 실험 API(local_waker, #118959)이에요.

출처: Rust 공식 문서

본문

pub struct ContextBuilder<'a> { /* private fields */ }

예시

#![feature(local_waker)]
use std::task::{ContextBuilder, LocalWaker, Waker, Poll};
use std::future::Future;

let local_waker = LocalWaker::noop();
let waker = Waker::noop();

let mut cx = ContextBuilder::from_waker(&waker)
    .local_waker(&local_waker)
    .build();

let mut future = std::pin::pin!(async { 20 });
let poll = future.as_mut().poll(&mut cx);
assert_eq!(poll, Poll::Ready(20));

주요 메서드

// Waker로부터 ContextBuilder를 만들어요.
pub const fn from_waker(waker: &'a Waker) -> ContextBuilder<'a>

// 기존 Context로부터 ContextBuilder를 만들어요.
pub const fn from(cx: &'a mut Context<'_>) -> ContextBuilder<'a>

// Waker를 설정해요.
pub const fn waker(self, waker: &'a Waker) -> ContextBuilder<'a>

// LocalWaker를 설정해요.
pub const fn local_waker(self, waker: &'a LocalWaker) -> ContextBuilder<'a>

// ContextBuilder를 사용해 Context를 만들어요.
pub fn build(self) -> Context<'a>

더 알아보기 (Learn more)