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

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
То есть когда компилятор делает name mangling — это абсолютно нормально и не вызывает вопросов, но когда я пишу такой код напрямую — это сразу обфускация и грубое нарушение хороших практик?! 😤
😁18🌚3👎2💩1🤡1
Сдавая кровь на анализы в поликлиннике, произвёл небольшой фурор своими ноготочками и получил шоколадку.
😁123👍2❤‍🔥1💩1
#prog #rust

Если вам вдруг потребовалось сделать набор взаимоисключающих фичи, то вместо квадратичного бойлерплейта с перечислением каждой пары фич и использованием compile_error! можно сделать так:

// `foo`, `bar` и `baz` взаимно исключают друг друга

// #[deny(const_err)] для Rust
до версии 1.66
#[rustfmt::skip]
const _USE_ONLY_ONE_OF_FOO_BAR_BAZ: [(); 1] = [
();
0
+ cfg!(foo) as usize
+ cfg!(bar) as usize
+ cfg!(baz) as usize
];

Ошибка не столь ясная, как в случае с compile_error!, но этот паттерн тривиально масштабируется на любое количество фичей.
👍10🤔3💩1
Блог*
#prog #rust Если вам вдруг потребовалось сделать набор взаимоисключающих фичи, то вместо квадратичного бойлерплейта с перечислением каждой пары фич и использованием compile_error! можно сделать так: // `foo`, `bar` и `baz` взаимно исключают друг друга //…
@tyranron совершенно справедливо добавил, что ошибку можно сделать и более читаемой:

#[deny(const_err)]
const _: () = {
let n_activated = cfg!(foo) as usize + cfg!(bar) as usize + cfg!(baz) as usize;
if n_activated != 1 {
panic!("Only one of `foo`, `bar` or `baz` can be used")
}
};

Но это требует наличия паники в const-контексте, что доступно только с версии 1.57, в то время как вариант с длинной массива работает даже на Rust 1.0.
👍4💩1
Forwarded from ozkriff.games 🦀 (ozkriff🇺🇦)
# godbolt.org's LLVM Opt Pipeline View

Not exactly fresh news but it turns out that Compiler Explorer got an amazing feature last year: ability to step through the individual LLVM optimization passes and see what exact effect it has on your code sample. 🤯

Example: https://rust.godbolt.org/z/46P8MP3x1
👍12🔥3🤯1💩1
#prog #meme

GNU-стиль — это вообще мем. Тип, зачем люди вообще так пишут, да ещё и добровольно?
💩1
👋 Привет! Я сделал бота, который умеет искать сохраненные мемы в инлайн-режиме — Memeries Bot.

Как это работает: присылаете боту картинку с текстом, он ее сохраняет и распознает на ней текст с помощью OCR-модели. Теперь эту картинку можно искать в инлайн-режиме по тексту, что был на ней. Бот поддерживает мемы на русском и английском, с другими языками — как повезет 😃

Попробовать можно тут: @memeries_bot

Идея поиска мемов по тексту у меня была давно, но сделать бота руки дошли только сейчас. Кстати, идея с инлайн-режимом появилась благодаря этому проекту и советам @Loskirs
👍4💩1
Forwarded from ТГ Шевченка
👍15😁7💩1
😭16🤔2👍1😢1💩1
#prog #rust

Ура!
💩1
Forwarded from Segment@tion fault
Конец популярного крейта once_cell.

Потому что once_cell больше не отдельный крейт, а официально ушел в std. С чем его поздравляем, ура.

https://github.com/rust-lang/rust/pull/105587
👍19🎉9🤯3🔥1💩1
Forwarded from Санечка Ъысь
9💩1
И, кстати, у меня сегодня день рождения. Четверть века.

Ура, что ли.
🎉49🔥11🤡1