Spec-Zone.ru › Tokio

Структура Builder

pub struct Builder<'a> { /* private fields */ }
Доступно только на tokio_unstable и при включённом crate feature rt и crate feature tracing.

Фабрика, используемая для настройки свойств новой задачи.

Примечание: это нестабильный API. Публичный API этого типа может измениться в выпусках 1.x. Подробности см. в документации по нестабильным функциям.

Методы можно объединять в цепочки для настройки.

В настоящее время доступен только один параметр конфигурации:

  • name, задающий имя, связанное с задачей

С помощью Builder можно создать три типа задач:

  • spawn_local для выполнения фьючерсов, не реализующих Send
  • spawn для выполнения фьючерсов, реализующих Send, в среде выполнения
  • spawn_blocking для выполнения блокирующего кода в пуле потоков для блокирующих задач.

Пример

use tokio::net::{TcpListener, TcpStream};

use std::io;

async fn process(socket: TcpStream) {
    // ...
}

#[tokio::main]
async fn main() -> io::Result<()> {
    let listener = TcpListener::bind("127.0.0.1:8080").await?;

    loop {
        let (socket, _) = listener.accept().await?;

        tokio::task::Builder::new()
            .name("tcp connection handler")
            .spawn(async move {
                // Process each socket concurrently.
                process(socket).await
            })?;
    }
}

Реализации

impl<'a> Builder<'a>

pub fn new() -> Self

Создаёт новый конструктор задач.

pub fn name(&self, name: &'a str) -> Self

Назначает имя создаваемой задаче.

pub fn spawn<Fut>(self, future: Fut) -> Result<JoinHandle<Fut::Output>>
where Fut: Future + Send + 'static, Fut::Output: Send + 'static,

Создаёт задачу с настройками этого конструктора в текущей среде выполнения.

Паника

Этот метод вызывает панику, если его вызвать вне среды выполнения Tokio.

Подробнее см. task::spawn.

pub fn spawn_on<Fut>( self, future: Fut, handle: &Handle, ) -> Result<JoinHandle<Fut::Output>>
where Fut: Future + Send + 'static, Fut::Output: Send + 'static,

Создаёт задачу с настройками этого конструктора в указанной дескрипторе среды выполнения.

Подробнее см. Handle::spawn.

pub fn spawn_local<Fut>(self, future: Fut) -> Result<JoinHandle<Fut::Output>>
where Fut: Future + 'static, Fut::Output: 'static,

Создаёт задачу !Send в текущем LocalSet или LocalRuntime с настройками этого конструктора.

Созданная future будет выполняться в том же потоке, который вызвал spawn_local. Этот метод можно вызывать только в контексте набора локальных задач или LocalRuntime.

Паника

Эта функция вызывает панику, если её вызвать вне набора локальных задач или LocalRuntime.

Подробнее см. task::spawn_local.

pub fn spawn_local_on<Fut>( self, future: Fut, local_set: &LocalSet, ) -> Result<JoinHandle<Fut::Output>>
where Fut: Future + 'static, Fut::Output: 'static,

Запускает !Send задачу на предоставленном LocalSet с настройками этого построителя.

Подробнее см. LocalSet::spawn_local.

pub fn spawn_blocking<Function, Output>( self, function: Function, ) -> Result<JoinHandle<Output>>
where Function: FnOnce() -> Output + Send + 'static, Output: Send + 'static,

Запускает блокирующий код в пуле потоков для блокирующих задач.

Паника

Этот метод вызывает панику, если его вызвать вне среды выполнения Tokio.

Подробнее см. task::spawn_blocking.

pub fn spawn_blocking_on<Function, Output>( self, function: Function, handle: &Handle, ) -> Result<JoinHandle<Output>>
where Function: FnOnce() -> Output + Send + 'static, Output: Send + 'static,

Запускает блокирующий код в пуле потоков для блокирующих задач дескриптора среды выполнения.

Подробнее см. Handle::spawn_blocking.

Реализации трейтов

impl<'a> Debug for Builder<'a>

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Форматирует значение с помощью указанного форматтера. Подробнее

impl<'a> Default for Builder<'a>

fn default() -> Builder<'a>

Возвращает «значение по умолчанию» для типа. Подробнее

Автоматические реализации трейтов

impl<'a> Freeze for Builder<'a>

impl<'a> RefUnwindSafe for Builder<'a>

impl<'a> Send for Builder<'a>

impl<'a> Sync for Builder<'a>

impl<'a> Unpin for Builder<'a>

impl<'a> UnsafeUnpin for Builder<'a>

impl<'a> UnwindSafe for Builder<'a>

Реализации для всех типов

impl<T> Any for T
where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

Получает TypeId для self. Подробнее

impl<T> Borrow<T> for T
where T: ?Sized,

fn borrow(&self) -> &T

Неизменяемо заимствует значение, находящееся во владении. Подробнее

impl<T> BorrowMut<T> for T
where T: ?Sized,

fn borrow_mut(&mut self) -> &mut T

Изменяемо заимствует значение, находящееся во владении. Подробнее

impl<T> From<T> for T

fn from(t: T) -> T

Возвращает аргумент без изменений.

impl<T> Instrument for T

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Инструментирует этот тип с помощью предоставленного Span, возвращая оболочку Instrumented. Подробнее

fn in_current_span(self) -> Instrumented<Self> ⓘ

Инструментирует этот тип с помощью текущего Span, возвращая оболочку Instrumented. Подробнее

impl<T, U> Into<U> for T
where U: From<T>,

fn into(self) -> U

Вызывает U::from(self).

То есть преобразование выполняется так, как это определено реализацией From<T> for U.

impl<T, U> TryFrom<U> for T
where U: Into<T>,

type Error = Infallible

Тип, возвращаемый в случае ошибки преобразования.

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Выполняет преобразование.

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

type Error = <U as TryFrom<T>>::Error

Тип, возвращаемый в случае ошибки преобразования.

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Выполняет преобразование.

impl<T> WithSubscriber for T

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Присоединяет предоставленный Subscriber к этому типу и возвращает обёртку WithDispatch. Подробнее

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Присоединяет текущий по умолчанию Subscriber к этому типу и возвращает обёртку WithDispatch. Подробнее

MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/task/struct.Builder.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API