мне не нравится реальность
505 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
2022-06-29_02-46.png
33.2 KB
Можно даже асинхронные функции таким же образом определять!

Но, к сожалению, только на найтли.
Очевидная часть: for цикл вызывает into_iter метод на значении после in. Соответственно надо каким-то образом сделать так, чтобы iter::<T> и iter::<T>() (и версии без турборыбы) имели значение, которое реализует IntoIterator или Iterator.

Для асинхронной версии всё тоже самое, .await вызывает метод into_future, соответственно нужно чтобы fut::<T>, fut и т.д. имели значение реализующее IntoFuture или Future.

А дальше нужно две хитрости, чтобы всё это довести до конца :)

Хитрость #1: есть хак, позволяющий эмитировать PhantomData, т.е. сделать структуру без полей но с дженериком. хак заключается в создании енама где T используется в нежилом варианте.

Хитрость #2: можно реализовать Deref<Target = fn() -> Iter<T>> для своего типа, таким образом его можно будет вызвать через (), без использования найтли фич.

Вот реализация: [play]
Occult club registration rejected after complaint it may summon Satan to University of Adelaide

> "Even if we did want to summon Satan, it's not against university or union policy to do so, so it's still not really grounds to reject us," Adelaide University Occult Club president Ashley Towner said.

теперь это моя любимая новость
2022-06-30_20-02.png
24.1 KB
кто заметит в чём проблема?
Forwarded from я что-то �� и всё ����
Этому миру нужен принтер от Pine64
Rust 1.62 tl;dr [blog] [gh release]:

cargo add теперь есть из коробки
#[derive(Default)] теперь работает на enum'ах! для выбора дефолтного варианта используется #[default] аттрибут
— Мьютексы теперь тоньше и быстрее на линуксе! вместо pthread реализации Mutex, Condvar и RwLock теперь используют futex [1]
— стабилизированы следующие API:
bool::then_some
f32::total_cmp
f64::total_cmp
Stdin::lines
windows::CommandExt::raw_arg
impl<T: Default> Default for AssertUnwindSafe<T>
From<Rc<str>> for Rc<[u8]>
From<Arc<str>> for Arc<[u8]>
FusedIterator for EncodeWide
RDM intrinsics on aarch64
mutable_borrow_reservation_conflict линт убрали, теперь такой код паттерн считается полностью валидным [2]
— В clippy добавили линт предупреждающий о неожиданно позднем дропе временных значений в match

[1]: pthread локи поддерживают больше фич чем локи из раста, что добавляет лишний оверхед. Например реализация мьютекса занимает 40 байт и её нельзя двигать, из-за чего std приходилось боксить внутренний мьютекс. Новая реализация требует всего 5 байт и не требует боксинга. Так-же это позволило сделать Mutex::new константной функцией (но это изменение не вошло в 1.62 релиз)

[2]: это про vec.push(vec.len()) и подобное — push требует уникальную ссылку, len шареную, в очевидном рассахаривании это бы привело к проблеме:
let tmp0 = &mut vec;
let tmp1 = &vec; // borrow conflict
let tmp2 = Vec::len(tmp1);
Vec::push(tmp0, tmp2);

Компилятор это решает так называемыми "two-phase borrows", уникальная ссылка на vec изначально берётся не как уникальная, а как "two-phase" которая превращается в уникальную ("активируется") при первом использовании. Пока ссылка не активирована (=> не использовалась) она не конфликтует с другими ссылками и поэтому пример vec.push(vec.len()) компилируется (и теперь даже без предупреждений).
я вообще иногда кидаю мемы для одного человека в канал(ы) с не менее чем 11-тью людьми
а вот такая мой канал мои правила шитпосты
> Although the HTTP standard specifies "unauthorized", semantically this response means "unauthenticated". That is, the client must authenticate itself to get the requested response.

...
О чём-то подобном/связанном я говорил в ihatereality/698.

Кажется что люди (и я в их числе!) чрезмерно зациклились на романтической любви; романтизировали её до состояния абсолютной приторности; стали одержимы ей. И хоть я не вижу ничего плохого в романтической любви, такая зацикленность мне кажется вредной.