Size: a a a

2020 November 14

MB

Mikail Bagishov in Rust Beginners
Почему ты не используешь tokio::signal?
источник

A

Adatan in Rust Beginners
до последнего не хотел, скажем так
источник

MB

Mikail Bagishov in Rust Beginners
Ну уж точно не надо самому писать обработчики сигналов.
Ты, например, написал неправильный.
источник

MB

Mikail Bagishov in Rust Beginners
Внутри обработчика можно использовать только небольшой набор действий, и захват блокировки, который происходит под капотом у println, в этот список не входит.
источник

A

Adatan in Rust Beginners
ну, ради интереса, я бы хотел поработать с raw input data, но не на ASM
источник

MB

Mikail Bagishov in Rust Beginners
что за raw input data? Почему тебе обязательно надо делать что-то синхронно, в момент обработки сигнала?
с tokio ты можешь завести таску, которая будет просыпаться когда пришел сигнал, и делать все необходимые вещи без дурацих ограничений.
источник

A

Adatan in Rust Beginners
Mikail Bagishov
что за raw input data? Почему тебе обязательно надо делать что-то синхронно, в момент обработки сигнала?
с tokio ты можешь завести таску, которая будет просыпаться когда пришел сигнал, и делать все необходимые вещи без дурацих ограничений.
а даже так, я просто думал "под капотом", все равно происходит тоже самое, что и с ctrlc
источник

MB

Mikail Bagishov in Rust Beginners
Под капотом там ставится обработчик сигнала, который просто уведомляет таску о сигнале
источник

MB

Mikail Bagishov in Rust Beginners
Потому что еще раз повторюсь - ничего содержательного непосредственно внутри обработчика ты не сделаешь.
источник

A

Adatan in Rust Beginners
@MikailBag да, все работает идеально
источник

a

antuan in Rust Beginners
кто в дизеле шарит?
как можно добиться желаемого?
источник

А⚙

Антон ⚙️ in Rust Beginners
antuan
кто в дизеле шарит?
как можно добиться желаемого?
А что не так-то?
источник

a

antuan in Rust Beginners
Антон ⚙️
А что не так-то?
и т.п. :)
источник

a

antuan in Rust Beginners
antuan
и т.п. :)
для апдейта, допустим, можно запилить структуру-AsChangeset. но для инсерта... а делать два запроса чет как-то тупо.
источник

MK

Marat Khayrutdinov in Rust Beginners
GWM
Та блин...
Ну ладно, спасибо
А чем плохи варианты с match?
        let result = match char_option {
           None => "char_option contains nothing",
           Some(c) if c == 'a' => "char_option contains 'a'",
           Some(c) if c == symbol => "char_option contains the same thing as variable symbol",
           Some(_) => "Other",
       };

или
        let result = match char_option {
           None => "char_option contains nothing",
           Some(char_option) => match char_option {
               'a' => "char_option contains 'a'",
               c if c == symbol => "char_option contains the same thing as variable symbol",
               _ => format!("other"),
           },
       };
источник

a

antuan in Rust Beginners
antuan
для апдейта, допустим, можно запилить структуру-AsChangeset. но для инсерта... а делать два запроса чет как-то тупо.
а, ну и да:
sql_function!(coalesce, Coalesce, (x: Nullable<Bool>, y: Bool) -> Bool);
источник

a

antuan in Rust Beginners
antuan
а, ну и да:
sql_function!(coalesce, Coalesce, (x: Nullable<Bool>, y: Bool) -> Bool);
разобрался. виноват, был дебилен
let starred = records_meta::starred.eq(coalesce(starred, records_meta::starred));
let unread = records_meta::unread.eq(coalesce(unread, records_meta::unread));
источник

G

GWM in Rust Beginners
Marat Khayrutdinov
А чем плохи варианты с match?
        let result = match char_option {
           None => "char_option contains nothing",
           Some(c) if c == 'a' => "char_option contains 'a'",
           Some(c) if c == symbol => "char_option contains the same thing as variable symbol",
           Some(_) => "Other",
       };

или
        let result = match char_option {
           None => "char_option contains nothing",
           Some(char_option) => match char_option {
               'a' => "char_option contains 'a'",
               c if c == symbol => "char_option contains the same thing as variable symbol",
               _ => format!("other"),
           },
       };
Не плохи, я типо такого и сделал в итоге, просто надеялся что это можно покороче описать
            match self.field.at(*y, *x) {
               Some(&Some(ch)) if ch == symbol => true,
               _ => false
           }
источник

a

antuan in Rust Beginners
antuan
разобрался. виноват, был дебилен
let starred = records_meta::starred.eq(coalesce(starred, records_meta::starred));
let unread = records_meta::unread.eq(coalesce(unread, records_meta::unread));
хотя нет, так ещё хуже. теперь портянка в два экрана...
источник

MB

Mikail Bagishov in Rust Beginners
А тут matches!(self.field.at(*y, *x), Some(&ch) if ch == symbol) не сработает?
источник