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

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Взаимная любовь — это прекрасно. Особенно, если один из её субъектов — ты.
#prog #article

Немного (реально немного) о том, почему надо думать о атомарности и модели памяти и о том, как это сказывается на вполне себе прикладном коде. А ещё в кои-то веки внятно рассказано про то, почему операции чтения и записи значений могут быть переставлены.
#prog #rust #article

Толян David Tolnay когда-то писал о том, как можно до некоторой степени сымитировать специализацию для частных случаев, используя тот факт, что Rust может автоматически вставлять ссылку при использовании синтаксиса вызова метода через точку. У этого подхода есть несколько ограничений. Одно из них — это то, что, в отличие от истинной специализации, оно не работает в обобщённых контекстах — и потому не ломает параметричность и пригодно в основном для макросов. Другое — это то, что таким способом можно получить не более двух вариантов различного поведения.

Lukas Kalbertodt развил этот подход, опираясь на в каком-то смысле противоположную фичу deref coercions, и получил подход, позволяющий иметь более одного варианта обобщённого поведения и, более того, явно задавать приоритет применения impl-ов, а не неявно через отношение "строго более специализирован".
Forwarded from partially unsupervised
image_2021-06-29_19-54-41.png
250.8 KB
Дорогие подписчики присылают контент для рубрики "Нерды шутят". Статья, кстати, реально существует.
Forwarded from Linker Unsafe
Boris Usievich:
от макросов надо держаться подальше в 99% случаев

Andrey Davydov:
Спасибо за совет, но я просто держусь подальше от C++

//из @ProCxx
#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)
Вот эта шайтан-штука — на самом деле церковный сейф времён чуть позже, чем в Эквадор пришли испанцы. Сделан из дерева и черепахового панциря (то есть прочный и тяжёлый). Снаружи выглядит как секретер, который нереально поднять и утащить. Но у него есть много секретных отделений: например, сбоку есть узор, который на самом деле не узор, а ящики. Ещё ящики могут быть внутри других ящиков. Комбинация, что характерно, вводится не чем-то отдельным, а самими ящиками секретера: нужно знать, какие из них открыть в совокупности, чтобы получить нужный секретный.

Простите за качество фото, дело в том, что там нельзя было снимать. Ну вот совсем нельзя.