Size: a a a

2020 October 22

АМ

Александр Мещеряков... in Rust Beginners
22 строка, у тебя там Self
источник

N

N in Rust Beginners
Александр Мещеряков
22 строка, у тебя там Self
спасибо
источник

SU

Solomon Ukezu in Rust Beginners
is ok
источник

BK

Bill Kuch in Rust Beginners
are you the real Lonami
источник

DD

Dmitry D. Chernov in Rust Beginners
Bill Kuch
are you the real Lonami
did you mess up the chats with some one that is Telethon-related?)
источник

MF

Mattew Fleuz in Rust Beginners
Как адекватные люди обрабатывают ошибки в раст? Как это принято делать? А то ведь во всех туторах и примерах этому не уделяют ровно никакого внимания. Просто пишут unwrap, из ряда что это мол для примера, а в реальных проектах удобнее использовать обратное распространение (?), но как лучше сводить разные типы ошибок, на каких уровнях распологать хендлеры?
Ну и немного мимо темы: как там нынче дела с обработкой ошибок аллокации?
источник

MF

Mattew Fleuz in Rust Beginners
Я ищу примеры работы с ошибками
источник

JM

John Meow in Rust Beginners
Mattew Fleuz
Как адекватные люди обрабатывают ошибки в раст? Как это принято делать? А то ведь во всех туторах и примерах этому не уделяют ровно никакого внимания. Просто пишут unwrap, из ряда что это мол для примера, а в реальных проектах удобнее использовать обратное распространение (?), но как лучше сводить разные типы ошибок, на каких уровнях распологать хендлеры?
Ну и немного мимо темы: как там нынче дела с обработкой ошибок аллокации?
thiserror, anyhow
источник

IB

Ilya Bogdanov in Rust Beginners
snafu ещё
источник

MF

Mattew Fleuz in Rust Beginners
anyhow я попробовал, удобно вынести обработку из функции, можно сделать универсальный хендлер, но есть ли что-то что я упускаю? Хочется увидить пару каких нибудь примеров работы с ошибками с пометкой: "Чувак, вот так можно писать. Если ты так напишешь, то человек читающий это после тебя не будет крыть тебя ласковыми, и работать все будет хорошо"
источник

АГ

Алексей Герасимов... in Rust Beginners
Mattew Fleuz
anyhow я попробовал, удобно вынести обработку из функции, можно сделать универсальный хендлер, но есть ли что-то что я упускаю? Хочется увидить пару каких нибудь примеров работы с ошибками с пометкой: "Чувак, вот так можно писать. Если ты так напишешь, то человек читающий это после тебя не будет крыть тебя ласковыми, и работать все будет хорошо"
основная идея: сохранять типы ошибок если пишешь библиотеку (thiserror, snafu), чтобы пользователь твоей либы мог их поматчить, а если пишешь приложуху - там обычно ошибки тупо логируются, соответственно можно все заворачивать в anyhow, стирая тип.
в библиотеке обычно делают один энум на всю либу, ну и можно еще внутри модулей тоже свои типы ошибок делать, если есть какая-то внутренняя обраотка на промежуточных уровнях (чтобы не матчить ошибки которых в данном месте быть не может, но из-за использования общего энума они в типе есть)
источник

IB

Ivan Boldyrev in Rust Beginners
Mattew Fleuz
Как адекватные люди обрабатывают ошибки в раст? Как это принято делать? А то ведь во всех туторах и примерах этому не уделяют ровно никакого внимания. Просто пишут unwrap, из ряда что это мол для примера, а в реальных проектах удобнее использовать обратное распространение (?), но как лучше сводить разные типы ошибок, на каких уровнях распологать хендлеры?
Ну и немного мимо темы: как там нынче дела с обработкой ошибок аллокации?
источник

MF

Mattew Fleuz in Rust Beginners
Есть ли элегантные способы перезапустить асинхронную функцию через некоторый интервал при возникновении ошибки, кроме как самому написать врапер? То есть что бы она возвращала Pending при натыкании на нее и запускалась заново с теми же или переработанными параметрами
источник

АГ

Алексей Герасимов... in Rust Beginners
Mattew Fleuz
Есть ли элегантные способы перезапустить асинхронную функцию через некоторый интервал при возникновении ошибки, кроме как самому написать врапер? То есть что бы она возвращала Pending при натыкании на нее и запускалась заново с теми же или переработанными параметрами
параметры уже потратиться могли
источник

DF

Dollar Føølish in Rust Beginners
Потрачено!
источник

MF

Mattew Fleuz in Rust Beginners
окей, допустим в случае когда они все Copy
источник

АГ

Алексей Герасимов... in Rust Beginners
Mattew Fleuz
окей, допустим в случае когда они все Copy
fn auto_retry<F: TryFuture>(factory: impl Fn() -> F) -> impl Future<Output=F::Ok> {
 loop {
   match factory().await {
     Ok(r) => break r,
     Err(_) => continue
   }
 }
}

как-то так?
источник

MF

Mattew Fleuz in Rust Beginners
Алексей Герасимов
fn auto_retry<F: TryFuture>(factory: impl Fn() -> F) -> impl Future<Output=F::Ok> {
 loop {
   match factory().await {
     Ok(r) => break r,
     Err(_) => continue
   }
 }
}

как-то так?
да, что-то вроде. Было бы классно реализовать универсальную обертку в которую можно передать основную функцию, кортеж аргументов к ней, задержку и решающую функцию типа
fn(E: Error) -> bool
но std::ops::Fn::call() не стабильна, а так же я не знаю как обозначить кортеж как входной параметр ибо каждый кортеж это отдельный тип
источник

r

red75prime in Rust Beginners
Mattew Fleuz
да, что-то вроде. Было бы классно реализовать универсальную обертку в которую можно передать основную функцию, кортеж аргументов к ней, задержку и решающую функцию типа
fn(E: Error) -> bool
но std::ops::Fn::call() не стабильна, а так же я не знаю как обозначить кортеж как входной параметр ибо каждый кортеж это отдельный тип
А чем`||{ f(a,b,c) }` не подходит в качестве функции и кортежа аргументов?
источник

MF

Mattew Fleuz in Rust Beginners
потому что хочется иметь возможность передавать туда функции с различным числом аргументов
источник