Forwarded from мне не нравится реальность (вафель 🧇)
А узнал я это, потому что решил воспользоваться cargo-script — плагином для
Чтобы скрипты "сами запускались", чтобы можно было запустить сразу скрипт, а не
Хотелось в гит положить
cargo
, который позволяет запускать отдельные rust-файлы. Зависимости можно указать прямо в нём же. Чтобы скрипты "сами запускались", чтобы можно было запустить сразу скрипт, а не
cargo script -- smt
, в линуксе предлагается использовать hashbang
— #!/usr/bin/env run-cargo-script
. В винде такой возможности нет и поэтому предлагается ассоциировать экстеншен с запуском через cargo-script
. Чтобы это не пересекалось с обычными растовыми .rs
файлами, предлагается использовать .crs
. И что? Ну и всё. Хотелось в гит положить
.crs
файл, чтобы виндузятникам было удобно, но при этом чтобы в гитхабе работала подсветка синтаксиса.#prog #go #article
Как в Go при помощи линтера решается проблема, которая в других языках решается проверкой типов.
blog.tomarrell.com/post/introducing_wrapcheck_linter_for_go
Как в Go при помощи линтера решается проблема, которая в других языках решается проверкой типов.
blog.tomarrell.com/post/introducing_wrapcheck_linter_for_go
Tomarrell
Introducing Wrapcheck: An error wrapping linter for Go
Tom Arrell's blog. Tom is a Software Engineer who writes about programming, embedded and electrical projects, and life.
Привет, я подсяду? Спасибо.
Почему у меня на рюкзаке шестерёнка? Ну, просто мне понравилась шестерёнка.
Поддерживаю ли я Rust? Да.
Да, я являюсь частью сообщества. А почему ты спрашиваешь?
В смысле навязываю тебе что-то? Так ты же сам спросил. Ладно.
Хочу ли я переписать всё на Rust? Боже, нет, конечно. Почему я должен это хотеть?
В смысле санитайзеры делают Rust ненужным? Нет, постой, это не так работает немножко. Тебе объяснить?
Не надо пропагандировать? Я не пропагандирую, ты просто сам спросил у меня… Ясно, я сумасшедший. Как и все. Ладно, извини, что потревожил. Я отсяду.
Почему у меня на рюкзаке шестерёнка? Ну, просто мне понравилась шестерёнка.
Поддерживаю ли я Rust? Да.
Да, я являюсь частью сообщества. А почему ты спрашиваешь?
В смысле навязываю тебе что-то? Так ты же сам спросил. Ладно.
Хочу ли я переписать всё на Rust? Боже, нет, конечно. Почему я должен это хотеть?
В смысле санитайзеры делают Rust ненужным? Нет, постой, это не так работает немножко. Тебе объяснить?
Не надо пропагандировать? Я не пропагандирую, ты просто сам спросил у меня… Ясно, я сумасшедший. Как и все. Ладно, извини, что потревожил. Я отсяду.
Блог*
#prog #rust #article Офигенная статья о заблуждениях касательно лайфтаймов. Очень хорошее подспорье новичкам. Как пишет автор в своём первом посте: While learning Rust I was struggling with certain concepts so I tried to organize my thoughts by writing them…
#prog #rust #article #моё
Как я и обещал, я... Так, погодите, я не писал об этом в блоге? Впрочем, ладно, напишу сейчас: я планировал написать перевод этой статьи и выложить его на Хабре. Собственно, сегодня я это и сделал.
Как я и обещал, я... Так, погодите, я не писал об этом в блоге? Впрочем, ладно, напишу сейчас: я планировал написать перевод этой статьи и выложить его на Хабре. Собственно, сегодня я это и сделал.
Хабр
Распространённые заблуждения о временах жизни в Rust
(прим. переводчика: времена жизни (lifetimes) — это одна из самых запутанных вещей в Rust, которая часто вызывает затруднение у новичков, даже несмотря на официа...
Блог*
#prog #cpp #article Доказательство того, что грамматика C++ неразрешима. В этот раз — полное, не подразумевающее наличие уже готовой машины Тьюринга на шаблонах. medium.com/@mujjingun_23509/full-proof-that-c-grammar-is-undecidable-34e22dd8b664
#prog
Я подозревал, что есть относительно общий метод для того, чтобы доказать, что имеющийся алгоритм решения задачи является оптимальным. Оказывается, такой метод действительно есть (до которого я бы сам не додумался): charging argument (нет, я не знаю, как это перевести)
Я подозревал, что есть относительно общий метод для того, чтобы доказать, что имеющийся алгоритм решения задачи является оптимальным. Оказывается, такой метод действительно есть (до которого я бы сам не додумался): charging argument (нет, я не знаю, как это перевести)
Wikipedia
Charging argument
In computer science, a charging argument is used to compare the output of an optimization algorithm to an optimal solution. It is typically used to show that an algorithm produces optimal results by proving the existence of a particular injective function.…
Forwarded from rusta::mann
В 2019 из компилятора Rust выпилили синтаксические плагины, и с тех пор в области интроспекции типчиков в мета-коде царит нищета: процедурные макросы, которые сейчас есть, мапят потоки токенов и имеют доступ только к маленькой части AST.
С тех пор никаких подвижек в стабилизации доступа к полноценному AST и compiler queries не было, что в целом понятно — утилиты, которые используют внутренние API rustc, периодически ломаются.
Но тем не менее, в ночниках доступен rustc_interface, с помощью которого можно наворачивать кастомные утилиты, которые используют компилятор для анализа кода (как, например, clippy или rustfmt).
И если на время проигнорировать нестабильность и ад поддержки совместимости таких штук с ночником, то
Когда-нибудь я может быть даже напишу прототип :))
#мысливслух #rustlang
С тех пор никаких подвижек в стабилизации доступа к полноценному AST и compiler queries не было, что в целом понятно — утилиты, которые используют внутренние API rustc, периодически ломаются.
Но тем не менее, в ночниках доступен rustc_interface, с помощью которого можно наворачивать кастомные утилиты, которые используют компилятор для анализа кода (как, например, clippy или rustfmt).
И если на время проигнорировать нестабильность и ад поддержки совместимости таких штук с ночником, то
rustc_interface
в частности, и доступ к приватным API компилятора в целом, дает возможность писать "гибридные" макросы в build.rs
.Когда-нибудь я может быть даже напишу прототип :))
#мысливслух #rustlang
Forwarded from dd if=/dev/stuff of=/dev/tg
Прекрасная статья (с упражнениями!) от Вероники Ромашкиной и Дмитрия Кованикова:
https://kowainik.github.io/posts/haskell-mini-patterns
https://kowainik.github.io/posts/haskell-mini-patterns
Kowainik
Kowainik - Haskell mini-patterns handbook
Collection of small Haskell patterns with detailed description, examples and exercises