Size: a a a

2020 November 05

SH

Stas Hehera in Rust Beginners
только там сложнее там с асинхронщиной и этот резалт засунутый в фьючер
источник

a

antuan in Rust Beginners
И что мешает вызвать is_foo() у результата-ошибки?
источник

SH

Stas Hehera in Rust Beginners
тогда надо имплементить для разных ошибок свой фу
источник

a

antuan in Rust Beginners
Макрос? :)
источник

SH

Stas Hehera in Rust Beginners
а можно как-то автоматически делать имплементацию?
источник

SH

Stas Hehera in Rust Beginners
хм... ещё не умею) но если так можно, буду смотреть
источник

SH

Stas Hehera in Rust Beginners
а сложно макросы?
источник

a

antuan in Rust Beginners
Есличто, я сам нубас, мб кто-то другой вариант предложит.
источник

MB

Mikail Bagishov in Rust Beginners
Stas Hehera
тогда надо имплементить для разных ошибок свой фу
А он что, одинаково устроен для разных типов ошибок?
источник

a

antuan in Rust Beginners
Да не, несложно. По примерам можно понять
источник

MB

Mikail Bagishov in Rust Beginners
Stas Hehera
а есть какой нибуть стандартный cmp(err, error) ?
Есть оператор сравнения a == b
источник

SH

Stas Hehera in Rust Beginners
Mikail Bagishov
Есть оператор сравнения a == b
для этого нужно чтобы каждый enum с ошибками имплементил ParialEq)
источник

MB

Mikail Bagishov in Rust Beginners
Насколько я понял, у тебя есть некоторый образец ошибки и ты хочешь понять, вернула ли функцию этот образец или какое-то другое значение.
источник

SH

Stas Hehera in Rust Beginners
ага
источник

MB

Mikail Bagishov in Rust Beginners
Ну это сравнение и есть
источник

SH

Stas Hehera in Rust Beginners
если переданую ошибку тогда ок если нет то вернуть ошибку
источник

MB

Mikail Bagishov in Rust Beginners
Сравнивать значения
побайтово обычно неверно, а любое другое сравнение требует какого-то конкретно кода у типа
источник

MB

Mikail Bagishov in Rust Beginners
Ну и PartialEq и является таким кодом, понимающим устройство конкретного типа
источник

АГ

Алексей Герасимов... in Rust Beginners
Stas Hehera
если переданую ошибку тогда ок если нет то вернуть ошибку
fn foo<T, E: PartialEq>(cb: impl Fn(…) -> Result<T, E>, err: E) -> … {
 match cb(…) {
   Err(err) => …,
   Ok(r) => …
 }
}

Так? или ты хочешь чтобы если E был enum то в качестве err можно было передавать условно говоря тэг без данных?
en
um MyError {
 Str(String),
 Num(i32),
}
foo(|…| {…}, MyError::Str)
Т
ак?
источник

SH

Stas Hehera in Rust Beginners
воо второй вариант
источник