group-telegram.com/dereference_pointer_there/4088
Last Update:
#prog #rust
В стандартной библиотеке Rust есть модуль sync::mpsc, который содержит реализацию однонаправленного multiple producer single consumer канала. Если открыть документацию метода принимающей половины канала, Receiver::recv_timout, то можно увидеть раздел "Known issues" про возможность неожиданной паники при вызове метода, вкупе с кодом для надёжного воспроизведения этой проблемы. И сама документация, и сообщение при панике отсылают на соответствующее issue в репозитории Rust, которому, на минуточку, 5 лет.
Так как тулинг Rust позволяет легко задействовать сторонние зависимости, те, для кого эта проблема была важна, использовали сторонние реализации каналов. Стандартом де-факто стала библиотека crossbeam-channel. После того, как она получила широкое распространение, пошли разговоры о том, чтобы включить реализацию в std — и прецедент для такого уже был с заменой предыдущей реализации HashMap на реализацию из hashbrown. В феврале этого года такой MR был открыт — правда, реализация в силу различных причин была несколько видоизменена — и вот совсем недавно был влит!
Но это ещё не всё. Помимо фикса этого старого бага, crossbeam-channel также в некоторых аспектах превосходил реализацию в std. Главное — то, что, в отличие от варианта из std, это multiple producer multiple consumer канал. А это значит, что в ближайшем будущем mpmc-канал наверняка будет и в std!
BY Блог*
Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260
Share with your friend now:
group-telegram.com/dereference_pointer_there/4088