мне не нравится реальность
504 subscribers
1.33K photos
57 videos
56 files
1.02K links
Мне не нравится реальность
N.B. waffle is unhinged

- кормить назад: @meowaffle
- кормить вперёд: github.com/sponsors/WaffleLapkin
- чят: https://xn--r1a.website/+5Dtuan4dVE5kYTcy
- блог: blog.ihatereality.space
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
вафель радуется смердженному PR'у, 2022 год, фото в цвете
This media is not supported in your browser
VIEW IN TELEGRAM
это я читаю в беггинерсах про дата рейсы
Заметка: не ходите пешком с человеком на лыжах, особенно, если снег глубокий и рыхлый

Заметка: не позволяйте собакам узнать, что они могут снять ваши перчатки
> Labeling question: is ICE -> crash a regression?

лмао

*🧊 — internal compiler error
TIL: git log -S"dbg!(vec.len())" находит коммит, в котором добавили dbg!(vec.len())

TIL: git rebase -i --exec "cmd" commit запускает комманду cmd на коммитах commit..HEAD

TIL: cargo test -q выводит по одной точке, вместо одной линии на тест, это сильно укорачивает вывод

As a side note: я наконец-то закончил рефакторинг, который пинал чуть ли не пол года 🎉
В свежем Rust 1.58.0 наконец-то можно использовать переменные напрямую при форматировании строк:

let person = get_person();
// ...
println!("Hello, {person}!"); // captures the local `person`

Пока что это работает только с именами, а не произвольными выражениями, но всё равно приятно. Прощайте format!("{name}", name = name);!
Кстати вижу многие сильно радуются этому, но я на самом деле не слишком воодушевлён. Хорошая фича, но не та, из-за которой я буду бегать по потолку.
мне не нравится реальность
В свежем Rust 1.58.0 наконец-то можно использовать переменные напрямую при форматировании строк: let person = get_person(); // ... println!("Hello, {person}!"); // captures the local `person` Пока что это работает только с именами, а не произвольными выражениями…
Ещё из плюшек:
— теперь *const T указатели можно дерефать в константных контекстах
— Теперь правила ансайзинга для дженерик структур немного проще[1]
— В copy{,_nonoverlapping} опять включили debug_assert'ы[2]
— реализация Clone для RSplit<T, P> больше не требует T: Clone
— Трейт Termiation теперь реализов для Result<Infallible, E>, позволяя писать fn main() -> Result<Infallible, ErrorType>, для програм которые не заканчиваются успешно через выход из main
— Стабилизировали File::options, замену FileOptions::new
— Стабилизировали {Option,Result}::unwrap_unchecked
— Стабилизировали многие методы Duration и MaybeUninit как const fn
— Компилятор теперь будет пытаться применять стабильные методы прежде, чем не стабильные. Это позволит избежать поломок при добавлении в std
методов, пересикающихся по именам с методами из сторонних трейтов.
rustdoc теперь показывает методы из всех Deref реализаций, рекурсивно (а не только из первой)

[1]: Новые правила позволяют такое:
struct A<T, U: ?Sized + 'static>(T, B<T, U>);
struct B<T, U: ?Sized>(T, U);

fn main() {
let x: A<[u32; 1], [u32; 1]> = A([0; 1], B([0; 1], [0; 1]));
// This previously did not work as the last field of `A` also mentions `T`,
// as only `U` changes this is now allowed thanks to this feature.
let _y: &A<[u32; 1], [u32]> = &x;
}

TL;DR: если последнее поле это структура, которая ансайзиться, то теперь и наружняя структура тоже ансайзиться.

А полные новые правила такие:
— the tail field depends on at least one type or const parameter not used in any other field
— the target struct can be created from the source by replacing only the parameters only found in the last struct field
— the tail field implements Unsize from source to target

[2]: Ранее они были отключены из-за того, что их нельзя выполнить в const fn

Полный список изменений: RELEASES.md#version-1580-2022-01-13
Иногда всё, что тебе нужно для счастья, это

cargo +49c0861ed0fa1d95186d88df0cd4310103e70957 c
ставьте лайк, если вы тоже плачете, потому что воеджеру 1 и воеджеру 2 наверное одиноко и страшно бороздить просторы бескрайнего космоса в одиночестве, вдали от солнечной системы
2022-01-14_13-19.png
33.9 KB
Меня нёрд-снайпнули в чяте и я реализовал compile-time интерпретатор BF на декларативных макросах раста (macro_rules!).
Хотите подробное объяснение того, как оно работает?
Final Results
87%
Да
13%
Нет
готовить шарлотку после 12 была плохая идея