Size: a a a

2020 November 05

KK

Kirill (Cykooz) Kuzm... in Rust Beginners
Stas Hehera
тоесть есть функция которая принимает какое то замыкание которое может вернуть ошибку, и также хочу принимать другим параметром вид ошибки, мол если совпадает то повторить попытку выполнения
Что значит "вид ошибки"? Ты имеешь ввиду конкретное значение enum-а, которым является значение ошибки?
источник

KK

Kirill (Cykooz) Kuzm... in Rust Beginners
Может будет проще, если вторым аргументом принимать функцию, которая на вход принимает "ошибку" и возвращает true или false (или специальный enum со заченияеми Repeat и NonRepeat)
источник

MB

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

w

whoami in Rust Beginners
мне нужно первый элемент вектора переместить в его конец, куда копать?
источник

w

whoami in Rust Beginners
источник

MB

Mikail Bagishov in Rust Beginners
whoami
мне нужно первый элемент вектора переместить в его конец, куда копать?
Звучит как a.swap(0, a.len()-1)
источник

SH

Stas Hehera in Rust Beginners
Спасибо, уже решил проблему, я написал трейт, который будет имплементирует функцию, которая возвращает для определённой ошибки тру или фолс
источник

SH

Stas Hehera in Rust Beginners
И все работает
источник

SH

Stas Hehera in Rust Beginners
есть у меня идея получше, смотрите, есть Result который например возвращает Err(err) как мне сматчить err с моим параметром например error. тоесть я передаю опредилённый вид enum (например Error::Error1 => параметром error).
источник

SH

Stas Hehera in Rust Beginners
например Result<String, Errors>. дальше я имею например Err(err) с этого резалта  и имею какию нибуть error = Errors::Error1. и мне нужно зделать так чтобы если этот err == error возвращаю true
источник

SH

Stas Hehera in Rust Beginners
но при этом Errors не имплементит PartionEq
источник

SH

Stas Hehera in Rust Beginners
тоесть просто так err == error я зделать не могу
источник

SH

Stas Hehera in Rust Beginners
это вроде не работает
источник

r

red75prime in Rust Beginners
Stas Hehera
но при этом Errors не имплементит PartionEq
Если тип не реализует PartialEq, то сравнить значения этого типа нельзя. Матчить для проверки равенства можно только с константой. То есть в общем случае сделать такое нельзя. Нужно искать другой способ сделать то, для чего это сравнение понадобилось.
источник

SH

Stas Hehera in Rust Beginners
red75prime
Если тип не реализует PartialEq, то сравнить значения этого типа нельзя. Матчить для проверки равенства можно только с константой. То есть в общем случае сделать такое нельзя. Нужно искать другой способ сделать то, для чего это сравнение понадобилось.
а есть какой нибуть стандартный cmp(err, error) ?
источник

SH

Stas Hehera in Rust Beginners
при этом компилятор знает точно что err и error относяться к одному enum
источник

a

antuan in Rust Beginners
enum Error {
Foo,
Bar
}
impl Error {
pub fn is_foo(&self) -> bool {
match self {
self::Foo => true,
_ => false
}
}
источник

a

antuan in Rust Beginners
Типа того?
источник

SH

Stas Hehera in Rust Beginners
немного не то, например
enum Errors {
E1,
E2,
}

fn foo<T>(task: T, error: T::Error)
where
T: Task {}
источник

SH

Stas Hehera in Rust Beginners
Task имплементит любую функцию которая возвращает Resut<T::Item, T::Error>
источник