Комментарии 16
Нет, пост не информативный.
Самый информативный пост это "задача => решение", а тут абсолютно несвязанный набор фич с невнятными примерами.
Какой-то набор "лозунгов": зайдите сюда, посмотрите туда ...
если можете доказать, что ваш API построен разумно
тема не раскрыта: кому нужно доказать? (компилятору?)
Посмотрел на "7 лет любимый язык": ну что сказать? там два критерия и в обоих раст впереди:
люблю больше, чем боюсь (вольный перевод по смыслу);
не пробовал, но хотел бы попробовать.
По-моему, это не есть критерий "любимый язык". Ведь в этом случае получится, два самых любимых языка программирования это rust и elixir. А "какой-то" python на 6 месте.
Ну и по мелочи: Почему статья заявлена как C++? (И как системное программирование?) Вроде бы ни того, ни другого (хотя ассемблер прикрутили).
"если можете доказать, что ваш API построен разумно"
тема не раскрыта: кому нужно доказать?
А также что значит разумно. А это слово несколько раз в статье встречается. Получается контраст: системное программирование и интуитивные понятия
тема не раскрыта: кому нужно доказать? (компилятору?)
Конкретно в данном случае слово "доказать" используется в математическом смысле. То есть важна внутренняя корректность этого доказательства, а не внешняя оценка. Само доказательство проверять никто не будет, однако при нарушении требований модели памяти программа окажется на территории UB.
Мало того, что оригинальная статья была довольно невысокого уровня, так ещё и перевод умудрились написать, не приходя в сознание. Ну слишком заметно, что перевод машинный и не особо исправленный.
Bench конечно есть в Rust, но вот такого же pprof как в Go нет. Только такое смог найти https://github.com/tikv/pprof-rs, но это не стандартный пакет. В Go что bench, что pprof идёт из стандарта и развивается основной командой ЯП.
За перевод спасибо!
Зачем нужен отдельный пакет, когда есть стандартный линуксовый perf
?
Оно буквально flamegraph-rs зовётся. Писался под впечатлением исходного перлового FlameGraph. Теперь гляжу оно даже как cargo instrument сделалось. А так и criterion это тоже не стандартный бенчмаркер. Есть ещё hyperfine из популярного и нестандартного. А среди батареек имеется cargo bench.
Вопрос "как выстрелить себе в ногу, используя Rust" - раскрыт. Практически все способы обхода встроенных защит ...
Да уж, содержательно статья действительно невысокого уровня, а пункт про Deref
и Arc::clone
полон фактических ошибок: пример кода, который заявлено, что не сработает (т.к. Rust якобы не поймёт вызвать ли .clone()
на Arc
или типе, который он оборачивает) на самом деле прекрасно работает (ссылка на playgroud с кодом). Предположу, что выбор метода тут происходит (в документации про это не находил, может кто-нибудь поделится ссылкой) по наикротчайшему "пути" до реализации. Т.е. в нашем случае clone
на Arc
ближе чем clone
на значении, которое Arc
оборачивает.
Спасибо за пример утиной типизации с &impl Trait !
В примерах везде используют &dyn Trait но блин это не так удобно
Концепции Rust, которые неплохо бы знать пораньше