Как заставить растовика задуматься над элементарной вещью?
Задайте ему вопрос: Какой тип у `0x12345_f32`?
Задайте ему вопрос: Какой тип у `0x12345_f32`?
Anonymous Quiz
61%
f32
5%
f64
5%
usize
5%
u32
12%
i32
5%
str
2%
!
3%
()
3%
Свой вариант в комментарии
🔥4
Написал свой парсер литералов в лексере.
Так он занял больше кода, чем весь остальной лексер.
Анэскейпинг хотя бы пошарился между символом и строкой.
А вот с числами сильно больше ожидаемого краевых случаев.
Так он занял больше кода, чем весь остальной лексер.
Анэскейпинг хотя бы пошарился между символом и строкой.
А вот с числами сильно больше ожидаемого краевых случаев.
🔥4
Спрашивал у ИИ на счёт квантовой теории. Оно мне между делом такое выдало:
Your body mass is mostly vibrating strong field energy.
Which is deeply unfair because you still have to exercise.
Your body mass is mostly vibrating strong field energy.
Which is deeply unfair because you still have to exercise.
😁16😐2❤1🥴1
Media is too big
VIEW IN TELEGRAM
Когда пришёл на босса, но у тебя нет времени уворачиваться от атак.
😎3
Жена:
Смотри, вот есть то и сё. Выбирай.
Я: Выбираю
Жена: Неправильно
Смотри, вот есть то и сё. Выбирай.
Я: Выбираю
Жена: Неправильно
❤13😁5💯5
Media is too big
VIEW IN TELEGRAM
Собрал быстренько на коленке такой вот виджет-тостер для отображения нотификаций.
🔥3❤1
В jkl уже сгромаздилось столько кода.
Кроме алгоритмов непосредственно для картинок, таких как алгоритмы блок-компрессии, обходы зигзагом, фильтры и конверторы разных цветовых схем.
Там образовались:
Векторы (те что из линала)
Враппер для
Variable-length encoding для целочисленных. Три вида.
Алгоритмы компрессии общего назначения.
С трудом удерживаюсь что бы не вытащить всё по отдельным крейтам. У меня их и так слишком много 🫣
А начиналось то просто "ну чего тащить целый линал, если мне только Vec3 нужен..."
БАЦ! 2923 строки с кодом одних только векторов.
Или "хочу жать не байты, а значения"
БАЦ! lz77.rs, lz78.rs, lzw.rs, rle.rs, ans.rs
Или вот "в этом векторе чиселки то не такие уж огромные будут"
БАЦ! vle.rs, bits.rs
Остановите меня!
Кроме алгоритмов непосредственно для картинок, таких как алгоритмы блок-компрессии, обходы зигзагом, фильтры и конверторы разных цветовых схем.
Там образовались:
Векторы (те что из линала)
Враппер для
io::Write, для записи бит, а не байт. Ну и враппер для io::Read, что бы эти биты читать.Variable-length encoding для целочисленных. Три вида.
Алгоритмы компрессии общего назначения.
С трудом удерживаюсь что бы не вытащить всё по отдельным крейтам. У меня их и так слишком много 🫣
А начиналось то просто "ну чего тащить целый линал, если мне только Vec3 нужен..."
БАЦ! 2923 строки с кодом одних только векторов.
Или "хочу жать не байты, а значения"
БАЦ! lz77.rs, lz78.rs, lzw.rs, rle.rs, ans.rs
Или вот "в этом векторе чиселки то не такие уж огромные будут"
БАЦ! vle.rs, bits.rs
Остановите меня!
🔥10❤2
Писал длинный пост со своим затыком.
Предугадывал ваши вопросы и отвечал на них.
Пока отвечал, нашел решение.
Всем спасибо.
Предугадывал ваши вопросы и отвечал на них.
Пока отвечал, нашел решение.
Всем спасибо.
🔥16❤5👍2😁1
Придумал забавный способ передать список из разных типов в функцию.
При этом трейт должен быть конкретный, для задачи, что бы в
В чем тут прикол, ведь так список как бы бесконечный получается, раз
В том то и дело, что с точки зрения типов - да, бесконечный.
Только в конце списка
Сам
То есть это бесконечный список типов, бесконечный хвост которого - пустота.
А
Функция, в которую передали такой список может продолжать делать
Ограничение этой конструкции в том, что функция не может делать
Ссылка на playground с демонстрацией идеи
https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=82105fbaa8d370dec34f00a5900793df
trait List {
type Head;
type Tail: List;
fn split(self) -> (Self::Head, Option<Self::Tail>);
}При этом трейт должен быть конкретный, для задачи, что бы в
Head добавить нужный баунд.В чем тут прикол, ведь так список как бы бесконечный получается, раз
Head всегда есть?В том то и дело, что с точки зрения типов - да, бесконечный.
Только в конце списка
Tail = Void, а у Void уже оба Head = Void и Tail = Void.Сам
Void это очевидно enum Void {}, который реализует любые нужный трейты.То есть это бесконечный список типов, бесконечный хвост которого - пустота.
А
List::split просто вернет None хвост в "рантайме".Функция, в которую передали такой список может продолжать делать
split, пока хвост - Some(tail).Ограничение этой конструкции в том, что функция не может делать
split в цикле, там же разные типы. Так что она либо делает это рекурсивно, либо фиксированное максимальное количество раз в теле.Ссылка на playground с демонстрацией идеи
https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=82105fbaa8d370dec34f00a5900793df
play.rust-lang.org
Rust Playground
A browser interface to the Rust compiler to experiment with the language
Вопросы, которыми я никогда раньше не задавался, но вот случилось:
Как упорядочит 3д вектора так, что бы разница между соседними элементами имела наименьшую энтропию?
Как упорядочит 3д вектора так, что бы разница между соседними элементами имела наименьшую энтропию?
В новой квартире в люстре спальни обнаружилась встроенная блютусная колонка.
Нашёл, случайно подключившись, а она пиликнула.
Вопрос: ЗАЧЕМ?
Нашёл, случайно подключившись, а она пиликнула.
Вопрос: ЗАЧЕМ?
😁14
Я попросил ИИ реализовать алгоритм для задачи, для которой брут-форс имеет сложность O(N!), но точно даёт оптимальный результат.
ИИ превзошел все мои ожидания и сделал алгоритм сложностью O( (N^2)! )
ИИ превзошел все мои ожидания и сделал алгоритм сложностью O( (N^2)! )
😁22🔥6❤3🤮1
Читал про японские числительные.
Там нашлась забавная сноска по произношению
Там нашлась забавная сноска по произношению
"Хяку" превращается в "Бяку" из-за рэндаку
😁12