Size: a a a

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

2020 March 31

YT

Yauheni Tsiarokhin in Rust — русскоговорящее сообществo
pl 🦑 hk
Зачем чейнить, почему не написать

while let Some(cmd) = rx.next().await {
match cmd(...) {...}
}
пожалуйста укажите мне что я не понимаю
источник

M

Max in Rust — русскоговорящее сообществo
добрый вечер ктото работал с сетевыми пакетами UDP (DNS протокол) в Rust, нужно читать, анализировать, изменить, дропать
источник

M

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

M

Max in Rust — русскоговорящее сообществo
для изменения нашел pnet либу, но пока чтото туго соображаю )
источник

M

Max in Rust — русскоговорящее сообществo
для чтения pcap, pktparse, dns-parser использую
источник

ph

pl 🦑 hk in Rust — русскоговорящее сообществo
Yauheni Tsiarokhin
пожалуйста укажите мне что я не понимаю
я не понимаю проблему, в моем варианте есть цикл, чего не хватает?
источник

r

red75prime in Rust — русскоговорящее сообществo
Yauheni Tsiarokhin
потому что мне надо вернуть фьючур который будет обработкой сообщенек заниматься
а не вытащить одну сообщеньку

    pub fn init(config: &AuditClientConfig) -> (Self, impl Future<Item = (), Error = AuditError>) {
       let (tx, rx) = mpsc::channel(0);
       let client = AuditClientApi { tx };
       let future_socket = UdpSocket::bind(&config.src_addr)
       let running = future_socket
           .and_then(move |socket| {
               rx
                   .take_while(|command| match command {
                        //
                   })
                   .filter_map(|command| match command {
                       //
                   })
                   .fold(socket, move |socket, entry| {
                        //
                   })
           })
       (client, running)
   }
Потому что эти все комбинаторы можно записать как что-то вроде этого

let running = async move { 
let socket = future_socket.await?;
while let Some(command) = rx.next().await? {
 match command {
   A => break,
   B(something) => socket.send(something).await?,
   C => {} // do nothing
 }
}
Ok(())
}
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Max
для изменения нашел pnet либу, но пока чтото туго соображаю )
так а в чем вопрос если вы все нашли?
источник

В

Вафель in Rust — русскоговорящее сообществo
Это в идее баг или что? Код компилиться, макрос с #[macro_export]
источник

p

polunin.ai in Rust — русскоговорящее сообществo
если компилируется код, то да, єто баг
источник

В

Вафель in Rust — русскоговорящее сообществo
При этом go to definition работает, хм
источник

r

red75prime in Rust — русскоговорящее сообществo
Вафель
Это в идее баг или что? Код компилиться, макрос с #[macro_export]
Хм. Стабилизировали использование путей для локальных макросов, что-ли? Что-то я такого не помню
источник

В

Вафель in Rust — русскоговорящее сообществo
Вафель
Это в идее баг или что? Код компилиться, макрос с #[macro_export]
@vlad20012 мне писать issue, или баг известен?
источник

В

Вафель in Rust — русскоговорящее сообществo
red75prime
Хм. Стабилизировали использование путей для локальных макросов, что-ли? Что-то я такого не помню
Так в 2018 можно макросы через crate_name::macro_name юзать, чем crate не имя крейта?

Also, макрос публичный жеж
источник

r

red75prime in Rust — русскоговорящее сообществo
Вафель
Так в 2018 можно макросы через crate_name::macro_name юзать, чем crate не имя крейта?

Also, макрос публичный жеж
Это только для внешних крейтов
источник

В

Вафель in Rust — русскоговорящее сообществo
red75prime
Это только для внешних крейтов
Почему?
источник

r

red75prime in Rust — русскоговорящее сообществo
Вафель
Почему?
Не помню причины. RFC надо искать
источник

В

Вафель in Rust — русскоговорящее сообществo
код билдиться начиная с 1.31
источник

В

Вафель in Rust — русскоговорящее сообществo
(до этого 2018 edition была unstable)
источник

r

red75prime in Rust — русскоговорящее сообществo
Хм, понятно. Я пробовал с crate::foo::foo!()
источник