Size: a a a

2021 October 09

IL

Ilya Lakhin in Rust Async
И просто дроп хэндла на поток не обязательно остановится процесс выполнения потока.
источник

KR

Kai Ren in Rust Async
This handle is best used for non-interactive uses, such as when a file is piped into the application. For technical reasons, stdin is implemented by using an ordinary blocking read on a separate thread, and it is impossible to cancel that read. This can make shutdown of the runtime hang until the user presses enter.

For interactive uses, it is recommended to spawn a thread dedicated to user input and use blocking IO directly in that thread.
источник

KR

Kai Ren in Rust Async
короче тебе там тоже надо городить блокирующий селект в своём треде на отмену и чтение
источник
2021 October 13

KR

Kai Ren in Rust Async
Что-то совсем запутался с борровингом в асинке. Как-то можно эту ситуацию порешать?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=52594d758410ac9df8c7212abb8a15b7
источник

KR

Kai Ren in Rust Async
Такое впечатление что дешугаринг асинка держит &mut *conn даже после того как .await и return пройдены. Но не совсем понятно как это обойти.
источник

KR

Kai Ren in Rust Async
Сигнатуру функи менять нельзя, там в оригинале имплементация чужого трейта.
источник

f

folex in Rust Async
А какие сейчас есть хорошие зрелые реализации Mutex/RwLock, совместимые с async/await?
источник

KR

Kai Ren in Rust Async
tokio::sync
источник

KR

Kai Ren in Rust Async
Причём они runtime independent вроде как
источник

f

folex in Rust Async
А оно сильно на tokio завязано? У меня async_std...
источник

f

folex in Rust Async
о, круто. Посмотрю, спасибо!
источник

D

Denis in Rust Async
если попытаться на комбинаторах переписать, упираешься в то же самое
источник

D

Denis in Rust Async
прям жопа
источник

KR

Kai Ren in Rust Async
дя, неожиданно получилось, вроде тривиальщина
источник

D

Denis in Rust Async
вручную не сделать без боксов, т.к. tokio_postgres использует async fn :(
источник

ph

pl 🦑 hk in Rust Async
в async_std свои есть Mutex/RwLock
источник

r

red75prime in Rust Async
Тут пожалуй только ансейфом отвязывать лайфтайм tx от &mut *conn. return Ok(unsafe { std::mem::transmute::<Transaction<'_>, Transaction<'_>>(tx) }),
Вроде бы должно быть safe.
источник

f

folex in Rust Async
И правда!
источник

f

folex in Rust Async
Как будто бы по хорошему Client::transaction в Err должно возвращать ссылку на &mut connection
источник

f

folex in Rust Async
Вроде нет никакого другого способа выразить окончание владения ссылкой
источник