Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
176 - Telegram Web
Telegram Web
This media is not supported in your browser
VIEW IN TELEGRAM
Как проходит разработка Арканы
😁10
Сегодня меня осенило, что Rust не позволяет достаточно гибко программировать.
Например я хочу специализировать структуру по значению дженерик константы, а не могу :(

Долой Rust, даешь скрепные Си кресты
😁14👍4👏2
Зайдите сегодня на godbolt.org Там завезли по-настоящему темную тему, а не вот эти вот темно-серые бэкграунды
🤣10🤩2
Fraction of C++ power
😁11
This media is not supported in your browser
VIEW IN TELEGRAM
👍5
https://docs.rs/amity

Это Раст на меня одного так действует или на всех, что маленький наборчик алгоритмов написаный под собственные сценарии использования хочется положить в красиво оформленную либу, написать документацию и пройтись clippy pedantic, что бы было удобно и красиво?
🔥10😁1
- Эй, ЧатГПТ, я придумал сделать вот такой алгоритм интерполяции фреймов.
Напиши его на питоне, пожалста.
Что б на вход видео принимало, интерполировало и выдавала видео со сгенеренными фреймами.

- Вот код.

<звуки копипасты и запуска из консоли на коротеньком видео>

Ждем
😁9
Немного математики
11🔥2👏2
Ищу интересные магические предметы для персонажей в ДнД.
Вижу "Сфера разрыва донжона".
Ну-ка, ну-ка, как оно там донжоны разрывает?

Donjon’s Sundering Sphere
А я надеялся
😁1
А вот интересно. Есть ли достаточно черная магия, которая позволит написать такие две функции.

const fn IsCalledWith<T>() -> bool { ... }
fn CallItWith<T>() { .. }


заметьте, что const.

По сути я хочу знать, а функция с неким типом вообще где-то в коде вызывается?
И получить const bool
This media is not supported in your browser
VIEW IN TELEGRAM
Давненько ничего я не выкладывал.
Поэтому вот вам видео с геометрической либой.

Первая операция - отражение.

Планируется полный комплект геометрической алгебры для 2д и 3д.

Тулза на коленке сделана для отладки.
🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
Теперь можно отражать и точки и линии в линиях, а потом в отраженных отражать
🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Как долго написать еще и отражение точек и линий в точке?

Я его написал после того как отправил прошлое видео
1
This media is not supported in your browser
VIEW IN TELEGRAM
Умножаем две линии друг на друга и получаем Motor. Который вращает объекты вокруг точки пересечения линий на удвоенный угол между ними.

А что если они параллельные?
Вращение превращается в линейное движение на удвоенное расстояние между линиями. А формула все та же.
3
Кто угадает как вычисляется пересечение двух линий?
Завершаем базовые функции линией через 2 точки и проекцией точки на линию и линии на точку
This media is not supported in your browser
VIEW IN TELEGRAM
Обычное умножение линий дает мотор, который сдвигает на удвоенное растояние и поворачивает на удвоенный угол между линиями.

Что ж, гораздо удобнее брать от этого умножения квадратный корень.

Теперь, как вы видите, точки следуют за второй линией в той же конфигурации, в какой они находятся у первой линии.
Начинаю регулярную рубрику Rust Tips 🔧

Сегодня - о замечательной функции Cell::from_mut

Она позволяет превратить &mut T в &Cell<T>, что все еще позволяет изменять T, но ее разрешается расшарить
Вот классический пример, где как новичики, так и ветераны спотыкаются о borrow checker

let mut counter = 0;

let mut inc = || counter += 1;
let print = || println!("{}", counter); // cannot borrow `counter` as immutable because it is also borrowed as mutable

inc();
inc();
print();


Передать &mut в inc и одновременно & в print нельзя.

Здесь мы можем использовать магию Cell::from_mut, не изменяя окружающий код.
Обернем ссылку на counter и раздадим в замыкания.


let mut counter = 0;
let cell = Cell::from_mut(&mut counter);

let inc = || cell.set(cell.get() + 1);
let print = || println!("{}", cell.get());

inc();
inc();
print();


🎉 И вуаля - всё работает! 🎉

Бонус для внимательных:
Теперь inc теперь реализует и Fn.
Так что можно тот же трюк использовать что бы передать замыкание, которое что-то мутирует в функцию, которая принимает Fn без Send.
👍185
2025/07/13 05:19:59
Back to Top
HTML Embed Code: