Size: a a a

Rust — русскоговорящее сообществo

2020 October 10

Э

Эрик in Rust — русскоговорящее сообществo
Компилятор считает, что ты всё используешь.
источник

A

Aragaer in Rust — русскоговорящее сообществo
что значит используешь. Ну захотелось тебе в пустом контексте заюзать вычисление. Ну что ж с того.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Кстати, если бы компилятор ругался на 123;, то он бы ругался и на println!();.
источник

PK

Pavel Kirienko in Rust — русскоговорящее сообществo
Я просто пришёл с MISRA C++, где такие вещи обычно запрещены, и хотел понять, можно ли здесь призвать компилятор к содействию. Clippy ещё не пробовал
источник

PK

Pavel Kirienko in Rust — русскоговорящее сообществo
я, на самом деле, не практическую проблему решаю, а просто тыкаю палочкой
источник

Э

Эрик in Rust — русскоговорящее сообществo
Pavel Kirienko
Я просто пришёл с MISRA C++, где такие вещи обычно запрещены, и хотел понять, можно ли здесь призвать компилятор к содействию. Clippy ещё не пробовал
Погугли как в CI запускать клиппи и денаить ворнинги.
источник

Э

Эрик in Rust — русскоговорящее сообществo
В смысле, денаить ворнинги клиппи.
источник

PK

Pavel Kirienko in Rust — русскоговорящее сообществo
ок, спасибо
источник

АМ

Александр Маглеванны... in Rust — русскоговорящее сообществo
Ребята, подскажите, как отметить одну из ветвей match как невозможную, но без паник?

Вроде
let x = if let SomeEnum::First = variable {
   return Err(());
} else {
   match variable {
       SomeEnum::Second => expr(),
       SomeEnum::First => unreachable_without_panic!() // this
   }
};
источник

АМ

Александр Маглеванны... in Rust — русскоговорящее сообществo
Пример, конечно, из пальца, но суть должен передать.
источник

ИЛ

Иван Лещенко... in Rust — русскоговорящее сообществo
Александр Маглеванный
Ребята, подскажите, как отметить одну из ветвей match как невозможную, но без паник?

Вроде
let x = if let SomeEnum::First = variable {
   return Err(());
} else {
   match variable {
       SomeEnum::Second => expr(),
       SomeEnum::First => unreachable_without_panic!() // this
   }
};
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Александр Маглеванный
Ребята, подскажите, как отметить одну из ветвей match как невозможную, но без паник?

Вроде
let x = if let SomeEnum::First = variable {
   return Err(());
} else {
   match variable {
       SomeEnum::Second => expr(),
       SomeEnum::First => unreachable_without_panic!() // this
   }
};
А что должно произойти, если он все-таки выполнился?
источник

ИЛ

Иван Лещенко... in Rust — русскоговорящее сообществo
Но лучше глянуть в главу Safety
источник

АМ

Александр Маглеванны... in Rust — русскоговорящее сообществo
Спасибо
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Если ты уверен что недостижимо, и не можешь выразить это в типах то да, unreachable_unchecked
источник

АМ

Александр Маглеванны... in Rust — русскоговорящее сообществo
Mikail Bagishov
А что должно произойти, если он все-таки выполнился?
Никогда не выполнится, зачем думать что должно произойти?
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Александр Маглеванный
Ребята, подскажите, как отметить одну из ветвей match как невозможную, но без паник?

Вроде
let x = if let SomeEnum::First = variable {
   return Err(());
} else {
   match variable {
       SomeEnum::Second => expr(),
       SomeEnum::First => unreachable_without_panic!() // this
   }
};
abort()?
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Александр Маглеванный
Никогда не выполнится, зачем думать что должно произойти?
Ну типа если ты не прав, и при каких-то условиях этот случай все-таки выполнится, то поведение программы будет неопреедленным и может случиться что угодно
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Ну например если через полгода ты поменяешь первый if
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Компилятор вроде умеет выкидывать недостижимые паники
источник