2022-06-29_02-46.png
33.2 KB
Можно даже асинхронные функции таким же образом определять!
Но, к сожалению, только на найтли.
Но, к сожалению, только на найтли.
Очевидная часть:
Для асинхронной версии всё тоже самое,
А дальше нужно две хитрости, чтобы всё это довести до конца :)
Хитрость #1:есть хак, позволяющий эмитировать , т.е. сделать структуру без полей но с дженериком. хак заключается в создании енама где используется в нежилом варианте.
Хитрость #2: можно реализовать для своего типа, таким образом его можно будет вызвать через , без использования найтли фич.
Вот реализация: [play]
for цикл вызывает into_iter метод на значении после in. Соответственно надо каким-то образом сделать так, чтобы iter::<T> и iter::<T>() (и версии без турборыбы) имели значение, которое реализует IntoIterator или Iterator.Для асинхронной версии всё тоже самое,
.await вызывает метод into_future, соответственно нужно чтобы fut::<T>, fut и т.д. имели значение реализующее IntoFuture или Future.А дальше нужно две хитрости, чтобы всё это довести до конца :)
Хитрость #1:
PhantomDataTDeref<Target = fn() -> Iter<T>>()А более подробное объяснение можно прочитать в моём блоге :)
https://ihatereality.space/08-abusing-rust-traits-to-write-silly-things/
https://ihatereality.space/08-abusing-rust-traits-to-write-silly-things/
blog.ihatereality.space
(Ab)using Rust traits to write silly things
Explaining how to make a function that is callable with and without parentheses
Оцените прошедший день
Final Results
17%
+2 (прекрасно)
17%
+1
19%
0 (нейтрально)
19%
-1
29%
-2 (ужасно)
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.
теперь это моя любимая новость
> "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.
теперь это моя любимая новость
Forwarded from я что-то �� и всё ����
Этому миру нужен принтер от Pine64
Rust 1.62 tl;dr [blog] [gh release]:
—
—
— Мьютексы теперь тоньше и быстрее на линуксе! вместо
— стабилизированы следующие 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
—
— В clippy добавили линт предупреждающий о неожиданно позднем дропе временных значений в
[2]: это про
—
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()) компилируется (и теперь даже без предупреждений).Оцените прошедший день
Final Results
16%
+2 (прекрасно)
20%
+1
34%
0 (нейтрально)
13%
-1
18%
-2 (ужасно)
я вообще иногда кидаю мемы для одного человека в канал(ы) с не менее чем 11-тью людьми
> Although the HTTP standard specifies "unauthorized", semantically this response means "unauthenticated". That is, the client must authenticate itself to get the requested response.
...
...
Оцените прошедший день
Final Results
18%
+2 (прекрасно)
25%
+1
25%
0 (нейтрально)
11%
-1
20%
-2 (ужасно)
Forwarded from Алиса Королёва 🤍💙🤍☮️💙💛
for reference у меня есть пост с объяснением разницы между авторизацией и аутентификацией
https://xn--r1a.website/alice_said/2957
https://xn--r1a.website/alice_said/2957
Telegram
"о дааа я назову свой телеграм канал «придумайте мне название канала» «меня заставили создать канал» «у меня есть канал» «зачем
Пожалуйста, не путайте эти термины (особенно часто путают аутентификацию и авторизацию):
Идентификация - получение идентификатора
Аутентификация - проверка подлинности идентификатора
Авторизация - предоставление каких-то прав
Например, я скачала клиент телеграма.…
Идентификация - получение идентификатора
Аутентификация - проверка подлинности идентификатора
Авторизация - предоставление каких-то прав
Например, я скачала клиент телеграма.…
О чём-то подобном/связанном я говорил в ihatereality/698.
Кажется что люди (и я в их числе!) чрезмерно зациклились на романтической любви; романтизировали её до состояния абсолютной приторности; стали одержимы ей. И хоть я не вижу ничего плохого в романтической любви, такая зацикленность мне кажется вредной.
Кажется что люди (и я в их числе!) чрезмерно зациклились на романтической любви; романтизировали её до состояния абсолютной приторности; стали одержимы ей. И хоть я не вижу ничего плохого в романтической любви, такая зацикленность мне кажется вредной.
Telegram
Мне не нравится реальность
романтика слишком романтизирована
Оцените прошедший день
Final Results
18%
+2 (прекрасно)
20%
+1
32%
0 (нейтрально)
9%
-1
21%
-2 (ужасно)
Оцените прошедший день
Final Results
18%
+2 (прекрасно)
27%
+1
25%
0 (нейтрально)
9%
-1
21%
-2 (ужасно)