Сегодня меня осенило, что Rust не позволяет достаточно гибко программировать.
Например я хочу специализировать структуру по значению дженерик константы, а не могу :(
Долой Rust, даешь скрепные Си кресты
Например я хочу специализировать структуру по значению дженерик константы, а не могу :(
Долой Rust, даешь скрепные Си кресты
😁14👍4👏2
Зайдите сегодня на godbolt.org Там завезли по-настоящему темную тему, а не вот эти вот темно-серые бэкграунды
🤣10🤩2
https://docs.rs/amity
Это Раст на меня одного так действует или на всех, что маленький наборчик алгоритмов написаный под собственные сценарии использования хочется положить в красиво оформленную либу, написать документацию и пройтись clippy pedantic, что бы было удобно и красиво?
Это Раст на меня одного так действует или на всех, что маленький наборчик алгоритмов написаный под собственные сценарии использования хочется положить в красиво оформленную либу, написать документацию и пройтись clippy pedantic, что бы было удобно и красиво?
🔥10😁1
Ищу интересные магические предметы для персонажей в ДнД.
Вижу "Сфера разрыва донжона".
Ну-ка, ну-ка, как оно там донжоны разрывает?
Donjon’s Sundering Sphere
А я надеялся
Вижу "Сфера разрыва донжона".
Ну-ка, ну-ка, как оно там донжоны разрывает?
😁1
А вот интересно. Есть ли достаточно черная магия, которая позволит написать такие две функции.
заметьте, что const.
По сути я хочу знать, а функция с неким типом вообще где-то в коде вызывается?
И получить
const fn IsCalledWith<T>() -> bool { ... }
fn CallItWith<T>() { .. }
заметьте, что const.
По сути я хочу знать, а функция с неким типом вообще где-то в коде вызывается?
И получить
const bool
This media is not supported in your browser
VIEW IN TELEGRAM
Давненько ничего я не выкладывал.
Поэтому вот вам видео с геометрической либой.
Первая операция - отражение.
Планируется полный комплект геометрической алгебры для 2д и 3д.
Тулза на коленке сделана для отладки.
Поэтому вот вам видео с геометрической либой.
Первая операция - отражение.
Планируется полный комплект геометрической алгебры для 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
This media is not supported in your browser
VIEW IN TELEGRAM
Обычное умножение линий дает мотор, который сдвигает на удвоенное растояние и поворачивает на удвоенный угол между линиями.
Что ж, гораздо удобнее брать от этого умножения квадратный корень.
Теперь, как вы видите, точки следуют за второй линией в той же конфигурации, в какой они находятся у первой линии.
Что ж, гораздо удобнее брать от этого умножения квадратный корень.
Теперь, как вы видите, точки следуют за второй линией в той же конфигурации, в какой они находятся у первой линии.
Начинаю регулярную рубрику Rust Tips 🔧
Сегодня - о замечательной функции
Она позволяет превратить
Вот классический пример, где как новичики, так и ветераны спотыкаются о borrow checker
❌ Передать
Здесь мы можем использовать магию
Обернем ссылку на
🎉 И вуаля - всё работает! 🎉
Бонус для внимательных:
Теперь
Так что можно тот же трюк использовать что бы передать замыкание, которое что-то мутирует в функцию, которая принимает
Сегодня - о замечательной функции
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
.👍18❤5