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

- кормить назад: @meowaffle
- кормить вперёд: github.com/sponsors/WaffleLapkin
- чят: https://xn--r1a.website/+5Dtuan4dVE5kYTcy
- блог: blog.ihatereality.space
Download Telegram
24 мая будет бесплатная онлайн конференция посвящённая расту: https://skillsmatter.com/conferences/13771-rust-forum

TL;DR:
— Rust Async History, Libs, and Patterns by Katharina Fey
— Experimenting with Faster Elliptic Curves in Rust by Diego F. Aranha
— Rust's Unique Ownership Concept: Practical Examples and Why It's Important by Cecile Tonglet
— Rust in 2024 by Niko Matsakis

Мне интересно послушать что там скажут, докладчики интересные. Может кому-то тоже будет интересно. Я сказал "интересно" слишком интересное количество раз но у меня болит голова и я не буду это переписывать.

(там, если что, зарегаться надо)
"Так ну кто опять сделал изменения из-за которых у меня мердж конфликт???"




"А, это был я"
Так раздражает, когда люди, которые не пользуются на постоянной основе растом критикуют его.

Не потому что раст идеален. Но потому что они критикуют его не за то. Они не знают настоящих проблем раста.
Я только что победил компилятор в битве, которую начал годы назад.

Я думал что то, что я хотел выразить невозможно, но кажется что я ошибался...
(&A as *const u32).add(1).sub_ptr(&A as *const u32)

Видишь UB? И я не вижу. А оно есть.
Подсказка: тут UB нет:
let ptr = &A as *const u32;
ptr.add(1).sub_ptr(ptr)

(A — константа, sub_ptr это просто разница между указателями по сути)
На самом деле если так подумать, то там .add(1) даже не нужен:
(&A as *const u32).sub_ptr(&A as *const u32)
vs ptr.sub_ptr(ptr) показывают тоже самое поведение.

С точки зрения раста &A as *const u32 и &A as *const u32 указывают в разные allocated objects из-за чего их нельзя передавать sub_ptr.

Отмечу так-же что &A это не ссылка на temporary переменную, а static promotion. Почему static promotion одной и той-же константы даёт разные объекты непонятно, но с другой стороны непонятно а как иначе wrt паралельной компиляции например.

Самое забавное, что эти указатели вполне себе могут иметь один и тот же адресс! И более того, так на практике и получается. Вот песочница для самых любознательный: (playground) (на плейграунде ошибки ломаются почему-то, чтобы получить нормальное сообщение об ошибке запускайте локально)