Spec-Zone.ru › Tokio

Перечисление UnhandledPanic

#[non_exhaustive]
pub enum UnhandledPanic { Ignore, ShutdownRuntime, }
Доступно только в tokio_unstable и при включённой функции crate rt.

Как среда выполнения должна реагировать на необработанные паники.

Экземпляры UnhandledPanic передаются в Builder::unhandled_panic для настройки поведения среды выполнения при панике в запущенной задаче.

Подробнее см. в разделе Builder::unhandled_panic.

Варианты (неполный перечень)

В будущем в перечисления с неполным перечнем могут быть добавлены дополнительные варианты. Поэтому при сопоставлении с вариантами таких перечислений необходимо добавить дополнительную ветвь с шаблоном-заполнителем, чтобы учесть возможные будущие варианты.

Ignore

Среда выполнения должна игнорировать паники в запущенных задачах.

Паника передаётся в JoinHandle задачи, и все запущенные задачи продолжают работу в обычном режиме.

Это поведение по умолчанию.

Примеры

use tokio::runtime::{self, UnhandledPanic};

let rt = runtime::Builder::new_current_thread()
    .unhandled_panic(UnhandledPanic::Ignore)
    .build()
    .unwrap();

let task1 = rt.spawn(async { panic!("boom"); });
let task2 = rt.spawn(async {
    // This task completes normally
    "done"
});

rt.block_on(async {
    // The panic on the first task is forwarded to the `JoinHandle`
    assert!(task1.await.is_err());

    // The second task completes normally
    assert!(task2.await.is_ok());
})

ShutdownRuntime

Среда выполнения должна немедленно завершить работу, если в запущенной задаче произойдёт паника.

Среда выполнения немедленно завершит работу, даже если JoinHandle задачи, в которой произошла паника, всё ещё доступен. Все последующие запущенные задачи будут немедленно отброшены, а вызов Runtime::block_on приведёт к панике.

Примеры

ⓘ
use tokio::runtime::{self, UnhandledPanic};

let rt = runtime::Builder::new_current_thread()
    .unhandled_panic(UnhandledPanic::ShutdownRuntime)
    .build()
    .unwrap();

rt.spawn(async { panic!("boom"); });
rt.spawn(async {
    // This task never completes.
});

rt.block_on(async {
    // Do some work
})

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

impl Clone for UnhandledPanic

fn clone(&self) -> UnhandledPanic

Возвращает копию значения. Подробнее
1.0.0 (const: unstable) ·

fn clone_from(&mut self, source: &Self)

Выполняет копирующее присваивание из source. Подробнее

impl Debug for UnhandledPanic

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

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

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

impl Freeze for UnhandledPanic

impl RefUnwindSafe for UnhandledPanic

impl Send for UnhandledPanic

impl Sync for UnhandledPanic

impl Unpin for UnhandledPanic

impl UnsafeUnpin for UnhandledPanic

impl UnwindSafe for UnhandledPanic

Обобщённые реализации

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> CloneToUninit for T
where T: Clone,

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬Это экспериментальный API, доступный только в nightly. (clone_to_uninit)
Выполняет копирующее присваивание из self в dest. Подробнее

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> ⓘ

Инструментирует этот тип с помощью current 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> ToOwned for T
where T: Clone,

type Owned = T

Тип результата после получения владения.

fn to_owned(&self) -> T

Создаёт владеющие данные из заимствованных данных, обычно путём клонирования. Подробнее

fn clone_into(&self, target: &mut T)

Использует заимствованные данные для замены владеющих данных, обычно путём клонирования. Подробнее

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/runtime/enum.UnhandledPanic.html

Spec-Zone.ru

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