1.83K subscribers
3.3K photos
132 videos
15 files
3.58K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#prog #math #meme

И заодно неожиданный вариант использования этого шаблона
В СМЫСЛЕ УЖЕ ИЮЛЬ
Forwarded from мне не нравится реальность (вафель')
Как проверить что строка совпадает с "a"? Проще простого!
Forwarded from мне не нравится реальность (вафель')
Параноикам просьба отойти от этого поста.

Mara (m_ou_se, активная контрибьюторка раста) придумала как с помощью стабильного компилятора компилировать код, использующий nightly фичи.

Оригинальный пост: [twitter]

Тред с объяснением: [twitter] (честно, я сам не до конца понял как это работает)
#prog #abnormalprogramming

Я же говорил, что YAML — то ещё говнецо
#prog #rust

На всякий случай, Vec::dedup_by принимает в качестве аргумента функцию от двух &mut T, где левый аргумент — это элемент, который находится правее, а правый аргумент — это аргумент, который находится левее (если считать, что элементы в векторе расположены слева направо). Да, это написано в документации, но кто ж её читает...
#prog #rust

Вы ведь, наверное, слышали про макросы file!, line! и column!, которые разворачиваются в имя файла, строку и колонку места в файле в месте, где они были раскрыты? Это — "магические" макросы, встроенные в компилятор, вы такие написать сами не можете... Точнее, не могли до версии Rust 1.46.

Что поменялось в этой версии? В этой версии появился атрибут #[track_caller] (кстати, когда его только предлагали, он назывался blame_caller), который позволяет функции узнать информацию о месте, в котором она была вызвана (ну, почти: месте вызова выше по стеку в первой функции в стеке без этого атрибута). Эта информация предоставляется при помощи магического конструктора std::panic::Location::caller, который возвращает &'static Location<'static>, и, как показывает пример из документации к конструктору, у Location есть геттеры, покрывающие функционал вышеуказанных макросов. Таким образом, ничто не мешает написать свой, скажем, line!, который будет разворачиваться в ::core::panic::Location::caller().line().
Хозяйке на заметку

Опытные программисты на Rust знают, что есть реализация impl<A, E, V: FromIterator<A>> FromIterator<Result<A, E>> for Result<V, E>, которая позволяет при помощи .collect() собирать итератор результатов в результат с коллекцией или с первой ошибкой. Почему-то несколько менее известен тот факт, что для Option есть аналогичный impl со схожей семантикой.
Forwarded from Красные пики (Serge Abdulmanov)
Вот эта шайтан-штука — на самом деле церковный сейф времён чуть позже, чем в Эквадор пришли испанцы. Сделан из дерева и черепахового панциря (то есть прочный и тяжёлый). Снаружи выглядит как секретер, который нереально поднять и утащить. Но у него есть много секретных отделений: например, сбоку есть узор, который на самом деле не узор, а ящики. Ещё ящики могут быть внутри других ящиков. Комбинация, что характерно, вводится не чем-то отдельным, а самими ящиками секретера: нужно знать, какие из них открыть в совокупности, чтобы получить нужный секретный.

Простите за качество фото, дело в том, что там нельзя было снимать. Ну вот совсем нельзя.
Канал советую, его ведёт @milfgard, у которого талант писать интересно
Forwarded from Generative Anton
Во-первых, это красиво.
Во-вторых, если можно, то почему бы и нет?

Дэвид Тайлер из Майкрософта написал эмулятор 8080, но все как модно в 2021ом: облачно, c k8s и прочим мракобесием. Например, для каждого opcode’a написаны отдельные микросервисы на разных языках 👀
К сожалению, идиома "не видно ни зги" широко используется неправильно, с опечаткой и одним словом не в той раскладке. На самом деле она должна читаться как "не видно, не pub".
#gamedev

К сожалению, пока даты выхода нету вообще