Size: a a a

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

2020 August 24

b

in Rust — русскоговорящее сообществo
заканчивается всё этим «task 7 received err: error trying to connect: dns error: cancelled», и так каждая таска и каждый сайт
источник

b

in Rust — русскоговорящее сообществo
почему отмена происходит не понимаю,вроде await на client.get стоит
источник

R

Roman in Rust — русскоговорящее сообществo
приветствую, вчера скидывал код, мне посоветовали переписать на tokio, но я столкнулся с проблемой отмены тасков, и не совсем понимаю в чём дело. Вчера мне не ответили, как можно решить проблему
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=e4b4f00f7d0e1217f51a60ca1538dc06
На playground стоит все-таки выкладывать код, который должен работать после исправления бага.
Если у тебя к БД коннектит, то замени поход в БД на список сайтов, которые надо посетить
источник

b

in Rust — русскоговорящее сообществo
Roman
На playground стоит все-таки выкладывать код, который должен работать после исправления бага.
Если у тебя к БД коннектит, то замени поход в БД на список сайтов, которые надо посетить
источник

b

in Rust — русскоговорящее сообществo
на локалхосте вот такой вывод
task 8 received amazon.com
task 8 received err: error trying to connect: dns error: cancelled
task 7 received alexa.com
task 7 received err: error trying to connect: dns error: cancelled
task 6 received yoip.ru
итп
источник

R

Roman in Rust — русскоговорящее сообществo
К futures::future::join_all(handles) добавь .await
источник

R

Roman in Rust — русскоговорящее сообществo
Иначе ты не ждешь их, а дропаешь футуру, которая объединяет все запросы к сайтам и тут же завершаешь процесс
источник

R

Roman in Rust — русскоговорящее сообществo
Дропание футуры - это и есть cancelling
источник

b

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

R

Roman in Rust — русскоговорящее сообществo
Если бы ты не написал let _ = , то тебе ворнинг подсказал бы, что ты игноришь возвращаемую футуру
источник

Д

Дима in Rust — русскоговорящее сообществo
Продолжая мучения c WinAPI в Rust, переписываю код отсюда https://docs.microsoft.com/en-us/windows/win32/wnet/enumerating-network-resources

let dw_result: DWORD;
   let mut h_enum: LPHANDLE = null_mut();
   let mut lpnr_local: LPNETRESOURCEW = null_mut();


   dw_result = WNetOpenEnumW(RESOURCE_GLOBALNET, // all network resources
                           RESOURCETYPE_ANY,   // all resources
                           0,  // enumerate all resources
                             lpnr_local,       // NULL first time the function is called
                            h_enum);
   if dw_result != WN_NO_ERROR {
       println!("WnetOpenEnum failed with error {:?}\n", dw_result);
   }

Данный код пишет 487 (ERROR_INVALID_ADDRESS) в dw_result. А его C - реализация пишет 0 (NO_ERROR) результат. Почему?


C-реализация вот такая
LPNETRESOURCE lpnr = NULL;
DWORD dwResult;
   HANDLE hEnum;
   dwResult = WNetOpenEnum(RESOURCE_GLOBALNET, // all network resources
                           RESOURCETYPE_ANY,   // all resources
                           0,  // enumerate all resources
                           lpnr,       // NULL first time the function is called
                           &hEnum);    // handle to the resource

   if (dwResult != NO_ERROR) {
       printf("WnetOpenEnum failed with error %d\n", dwResult);
       return FALSE;
   }
источник

r

red75prime in Rust — русскоговорящее сообществo
Дима
Продолжая мучения c WinAPI в Rust, переписываю код отсюда https://docs.microsoft.com/en-us/windows/win32/wnet/enumerating-network-resources

let dw_result: DWORD;
   let mut h_enum: LPHANDLE = null_mut();
   let mut lpnr_local: LPNETRESOURCEW = null_mut();


   dw_result = WNetOpenEnumW(RESOURCE_GLOBALNET, // all network resources
                           RESOURCETYPE_ANY,   // all resources
                           0,  // enumerate all resources
                             lpnr_local,       // NULL first time the function is called
                            h_enum);
   if dw_result != WN_NO_ERROR {
       println!("WnetOpenEnum failed with error {:?}\n", dw_result);
   }

Данный код пишет 487 (ERROR_INVALID_ADDRESS) в dw_result. А его C - реализация пишет 0 (NO_ERROR) результат. Почему?


C-реализация вот такая
LPNETRESOURCE lpnr = NULL;
DWORD dwResult;
   HANDLE hEnum;
   dwResult = WNetOpenEnum(RESOURCE_GLOBALNET, // all network resources
                           RESOURCETYPE_ANY,   // all resources
                           0,  // enumerate all resources
                           lpnr,       // NULL first time the function is called
                           &hEnum);    // handle to the resource

   if (dwResult != NO_ERROR) {
       printf("WnetOpenEnum failed with error %d\n", dwResult);
       return FALSE;
   }
В расте h_enum = NULL, в С - указатель на hEnum
источник

Д

Дима in Rust — русскоговорящее сообществo
red75prime
В расте h_enum = NULL, в С - указатель на hEnum
не подскажете, как вернуть указатель, чтобы не ругался на то что в функцию пытаюсь подставить неинициализированную переменную?
источник

r

red75prime in Rust — русскоговорящее сообществo
Дима
не подскажете, как вернуть указатель, чтобы не ругался на то что в функцию пытаюсь подставить неинициализированную переменную?
let mut h_enum: HANDLE = null_mut(); и в вызове &mut h_enum
источник

r

red75prime in Rust — русскоговорящее сообществo
Или let mut h_enum = INVALID_HANDLE_VALUE;
источник

Д

Дима in Rust — русскоговорящее сообществo
red75prime
Или let mut h_enum = INVALID_HANDLE_VALUE;
Ну как стать таким же умным, как вы?

Спасибо огромное, заработало!
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
Дима
Ну как стать таким же умным, как вы?

Спасибо огромное, заработало!
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
Не сомневаюсь в red75prime , просто постановка забавная
источник

АК

Андрей Казанцев... in Rust — русскоговорящее сообществo
источник

Э

Эрик in Rust — русскоговорящее сообществo
Никак. У тебя Streaming итератор, а он требует GAT.
источник