мне не нравится реальность
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
Я просто обязан поделиться с вами этим. Hacker News на днях прилегли на некоторое время.

Кто-то смог угадать в чём была проблема....

https://twitter.com/jonahedwards/status/1545648218158993409

Из-за overflow во внутреннем uptime таймере SSD после 40 тысяч часов (примерно 4.5 года) превратились в кирпичи.

?????????аааааааааааааааа
https://www.youtube.com/watch?v=2y3IK1l6PI4

Интересный небольшой доклад (17m) на тему нового алгоритма сортировки "glidesort". По заверениям автора на случайных данных он в 4 раза быстрее чем стабильная сортировка в стандартной библиотеке Rust 👀

Впрочем насколько я понял сорцы пока не опубликованы, так что не то чтобы много понятно.
папа: мне кажется это твоё
папа: *протягивает костюм горничной*
я так люблю этого розоволосого дебила
посадил родителей играть в keep talking & nobody explodes, это будет весело 😌
так увлёкся фиксом микро-утилиты что забыл про остывающую еду :(
"После 15 минут наблюдения за выводом dbg!(&import) я решил что пора закругляться"
Окей, как выясняется структура была self-referential и Debug приводил к бесконечной рекурсии X)
Похвастаюсь и здесь что-ли: я реализовал Rust RFC 3216. Вот прям PR уже смерджили.

TL;DR: фича позволяет явно писать лайфтайм параметры для замыканий:

let _f = for<'a, 'b> |a: &'a A, b: &'b B| -> &'b C { b.c(a) };
// ^^^^^^^^^^^--- new!

https://github.com/rust-lang/rust/pull/98705
IF LET CHAINS ARE STABILIZED IN RUST 1.64

rust-lang/rust/pull/94927#event-7007028976

> 2 years, 4 months, 3 weeks and 1 day of long nights, obstacles and headaches.
> Hope stabilization won't be reverted but regardless, thanks to everyone who helped make this feature a reality.

Для тех кто не в теме, в расте можно делать паттерн матчинг в ifwhile цикле). Называется эта конструкция "if-let" и выглядит примерно вот так:

// выражение vvv
if let Some(x) = opt { ... }
// ^^^^^^^ паттерн

Синтаксис конфузный, но что имеем, то имеем, ладно. Проблемы (которые решает фича выше) начинается когда хочется сравнить сразу несколько выражений с паттернами. Можно использовать туплы:

if let (Some(x), Ok(y)) = (opt, res) { ... }

Но мало того, что это абсолютно не читаемо, мало того что это вычисляет res даже если паттерн и без него бы не сматчился, так ещё и в res тут нельзя использовать x. Поэтому это очень неудобно. Можно использовать вложенность:

if let Some(x) = opt {
if let Ok(y) = res { ... }
}

Но это ломает else (с таким вариантом его надо дублировать во все сложенные if'ы). Это всё настолько печально, что есть даже крейт if_chain с макросом который разбирается со всеми этими проблемами. Ну и фича которую вот стабилизировали — if let chains, которая позволяет писать вот так:

if let Some(x) = opt && let Ok(y) = res { ... }

😌