Size: a a a

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

2020 March 22

В

Вафель in Rust — русскоговорящее сообществo
Dmitry
   if let Err(VarError::NotPresent) = var("WAYLAND_DISPLAY") {

Можно как-то это сделать наоборот?
Нужно в общем проверить, есть ли переменная окружения, а я пока не знаю только как проверить если ее нет, а так как переменных несколько, то это быстро превращается в кошмар
if let Ok(_)/if let Ok(var)?
источник

M

Marat in Rust — русскоговорящее сообществo
Вафель
if let Ok(_)/if let Ok(var)?
может, его устроит еще и вариант VarError::NotUnicode
источник

M

Marat in Rust — русскоговорящее сообществo
вроде теперь макрос же есть !matches, его удобнее использовать
источник

M

Marat in Rust — русскоговорящее сообществo
if matches!(var("WAYLAND_DISPLAY"), Ok(_) | Err(VarError::NotUnicode(_)) {
 //...
}
источник

MF

Max Frai in Rust — русскоговорящее сообществo
Marat
можешь вот этот взять
https://docs.rs/heapless/0.2.1/heapless/ring_buffer/struct.RingBuffer.html

только нужно будет обернуть
fn enqueue(&mut self, item: T) -> Result<(), BufferFullError> и в случае BufferFullError вызывать dequeue
спасибо
источник

M

Marat in Rust — русскоговорящее сообществo
Max Frai
спасибо
сорян, там какой-то древний крейт, еще и ночник требует
источник

M

Marat in Rust — русскоговорящее сообществo
поищи на crates.io по ring buffer, ну или сам сделай обертку над массивом, она быстро пишется
источник

МЛ

Михаил Лёсин in Rust — русскоговорящее сообществo
Что-то никак я не могу разобраться судя по всему с довольно элементарной вещью, подскажите что я делаю не так? Вот тут суть проблемы (не компилится): https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=004a562a7f319ee95d590b432bd426a2
источник

D

Denis in Rust — русскоговорящее сообществo
Михаил Лёсин
Что-то никак я не могу разобраться судя по всему с довольно элементарной вещью, подскажите что я делаю не так? Вот тут суть проблемы (не компилится): https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=004a562a7f319ee95d590b432bd426a2
а зачем нужен бокс в type CError = Box<CreatrixError>?
источник

МЛ

Михаил Лёсин in Rust — русскоговорящее сообществo
я хочу в него упаковывать разные ошибки
источник

D

Denis in Rust — русскоговорящее сообществo
кажется, было бы разумнее сделать type CError = Box<dyn Error>;
источник

МЛ

Михаил Лёсин in Rust — русскоговорящее сообществo
раньше там было Box<dyn Error>
источник

МЛ

Михаил Лёсин in Rust — русскоговорящее сообществo
да, но я хочу понять как свой тип вводить при этом
источник

МЛ

Михаил Лёсин in Rust — русскоговорящее сообществo
это пример обрезаный конечно же
источник

D

Denis in Rust — русскоговорящее сообществo
источник

D

Denis in Rust — русскоговорящее сообществo
а может ну его и взять готовое решение для работы с ошибками?
источник

D

Denis in Rust — русскоговорящее сообществo
например, snafu или anyhow
источник

МЛ

Михаил Лёсин in Rust — русскоговорящее сообществo
вообще основная задача была в том что мне нужна возможность иногда возвращать не одну ошибку, а сразу кучу, например в векторе
источник

МЛ

Михаил Лёсин in Rust — русскоговорящее сообществo
и тут у меня все ломается, поэтому я решил начать с самого начала, т.к. тут понимания у меня пока мало
источник

D

Denis in Rust — русскоговорящее сообществo
кажется, что anyhow тебе подойдёт лучше всего
источник