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
от макросов надо держаться подальше в 99% случаев
Andrey Davydov:
Спасибо за совет, но я просто держусь подальше от C++
//из @ProCxx
Forwarded from мне не нравится реальность (вафель')
Как проверить что строка совпадает с
"a"
? Проще простого!Forwarded from мне не нравится реальность (вафель')
Параноикам просьба отойти от этого поста.
Mara (m_ou_se, активная контрибьюторка раста) придумала как с помощью стабильного компилятора компилировать код, использующий nightly фичи.
Оригинальный пост: [twitter]
Тред с объяснением: [twitter] (честно, я сам не до конца понял как это работает)
Mara (m_ou_se, активная контрибьюторка раста) придумала как с помощью стабильного компилятора компилировать код, использующий nightly фичи.
Оригинальный пост: [twitter]
Тред с объяснением: [twitter] (честно, я сам не до конца понял как это работает)
X (formerly Twitter)
Mara (@m_ou_se) on X
Oh no. It works. On stable.
#prog #rust
На всякий случай, Vec::dedup_by принимает в качестве аргумента функцию от двух
На всякий случай, Vec::dedup_by принимает в качестве аргумента функцию от двух
&mut T
, где левый аргумент — это элемент, который находится правее, а правый аргумент — это аргумент, который находится левее (если считать, что элементы в векторе расположены слева направо). Да, это написано в документации, но кто ж её читает...doc.rust-lang.org
Vec in std::vec - Rust
A contiguous growable array type, written as `Vec<T>`, short for ‘vector’.
#prog #rust
Вы ведь, наверное, слышали про макросы file!, line! и column!, которые разворачиваются в имя файла, строку и колонку места в файле в месте, где они были раскрыты? Это — "магические" макросы, встроенные в компилятор, вы такие написать сами не можете... Точнее, не могли до версии Rust 1.46.
Что поменялось в этой версии? В этой версии появился атрибут
Вы ведь, наверное, слышали про макросы file!, line! и column!, которые разворачиваются в имя файла, строку и колонку места в файле в месте, где они были раскрыты? Это — "магические" макросы, встроенные в компилятор, вы такие написать сами не можете... Точнее, не могли до версии Rust 1.46.
Что поменялось в этой версии? В этой версии появился атрибут
#[track_caller]
(кстати, когда его только предлагали, он назывался blame_caller), который позволяет функции узнать информацию о месте, в котором она была вызвана (ну, почти: месте вызова выше по стеку в первой функции в стеке без этого атрибута). Эта информация предоставляется при помощи магического конструктора std::panic::Location::caller, который возвращает &'static Location<'static>
, и, как показывает пример из документации к конструктору, у Location
есть геттеры, покрывающие функционал вышеуказанных макросов. Таким образом, ничто не мешает написать свой, скажем, line!
, который будет разворачиваться в ::core::panic::Location::caller().line()
.doc.rust-lang.org
file in std - Rust
Expands to the file name in which it was invoked.
Хозяйке на заметку
Опытные программисты на Rust знают, что есть реализация
Опытные программисты на Rust знают, что есть реализация
impl<A, E, V: FromIterator<A>> FromIterator<Result<A, E>> for Result<V, E>
, которая позволяет при помощи .collect()
собирать итератор результатов в результат с коллекцией или с первой ошибкой. Почему-то несколько менее известен тот факт, что для Option
есть аналогичный impl со схожей семантикой.doc.rust-lang.org
FromIterator in core::iter - Rust
Conversion from an [`Iterator`].
Forwarded from Красные пики (Serge Abdulmanov)
Вот эта шайтан-штука — на самом деле церковный сейф времён чуть позже, чем в Эквадор пришли испанцы. Сделан из дерева и черепахового панциря (то есть прочный и тяжёлый). Снаружи выглядит как секретер, который нереально поднять и утащить. Но у него есть много секретных отделений: например, сбоку есть узор, который на самом деле не узор, а ящики. Ещё ящики могут быть внутри других ящиков. Комбинация, что характерно, вводится не чем-то отдельным, а самими ящиками секретера: нужно знать, какие из них открыть в совокупности, чтобы получить нужный секретный.
Простите за качество фото, дело в том, что там нельзя было снимать. Ну вот совсем нельзя.
Простите за качество фото, дело в том, что там нельзя было снимать. Ну вот совсем нельзя.
Forwarded from Generative Anton
Во-первых, это красиво.
Во-вторых, если можно, то почему бы и нет?
Дэвид Тайлер из Майкрософта написал эмулятор 8080, но все как модно в 2021ом: облачно, c k8s и прочим мракобесием. Например, для каждого opcode’a написаны отдельные микросервисы на разных языках 👀
Во-вторых, если можно, то почему бы и нет?
Дэвид Тайлер из Майкрософта написал эмулятор 8080, но все как модно в 2021ом: облачно, c k8s и прочим мракобесием. Например, для каждого opcode’a написаны отдельные микросервисы на разных языках 👀
#prog #c #quotes
rrrad> это в каком месте язык C безопасный?
invasy> За пределами стэка и строк, поэтому стремится туда выбраться.
Тут
rrrad> это в каком месте язык C безопасный?
invasy> За пределами стэка и строк, поэтому стремится туда выбраться.
Тут
Хабр
Как школьный учитель изобрёл один из самых влиятельных языков программирования
Говоря коротко, С работает везде. Этот язык — не просто большой динозавр, которому каким-то образом удалось дожить до наших дней. Он крайне практичен, поэтому невероятно успешен. Удивительно, но...
❤1