Size: a a a

2020 April 08

∅ч

∅ ч in rust_offtopic
если я не ошибаюсь .await это макрос
источник

AZ

Alex Zhukovsky in rust_offtopic
red75prime может ты сможешь объяснить что функа из  https://t.me/rust_offtopic/221469 асинхронная?
источник

∅ч

∅ ч in rust_offtopic
правда через жопу придуманный хуй пойми как, но макрос
источник

AZ

Alex Zhukovsky in rust_offtopic
а то я чет подустал
источник

R

Rextester in rust_offtopic
Created by @GingerPlusPlus, powered by rextester.com.
источник

P

Pavel in rust_offtopic
если бы фьюча была горячей, то можно было бы сохранить ретурн, что-то сделать и потом его вернуть, вот это что-то было бы асинхронным
источник

ЕС

Егор Савельев... in rust_offtopic
А есть сомнения?
источник

AZ

Alex Zhukovsky in rust_offtopic
Pavel
если бы фьюча была горячей, то можно было бы сохранить ретурн, что-то сделать и потом его вернуть, вот это что-то было бы асинхронным
по-твоему не бывает холодной асинхронности, но это тоже нетак
источник

AZ

Alex Zhukovsky in rust_offtopic
Егор Савельев
А есть сомнения?
ну вот павел считает  что она синхронная
источник

ЕС

Егор Савельев... in rust_offtopic
Мне кажется что Павел не знает определения синхронной и асинхронной функции
источник

P

Pavel in rust_offtopic
Alex Zhukovsky
по-твоему не бывает холодной асинхронности, но это тоже нетак
да, холодная асинхронность это просто синхронная композиция лямбд
источник

P

Pavel in rust_offtopic
пока их не запустишь, потом они так же синхронно выполнятся относительно друг-друга
источник

P

Pavel in rust_offtopic
Егор Савельев
Мне кажется что Павел не знает определения синхронной и асинхронной функции
асинхронная функция завершает выполнение после того, как вернула результат, синхронная — до. foo создала объекь и закончила выполнение, после чего вернула его.
источник

r

red75prime in rust_offtopic
Тут надо начать с того, что это действительно не асинхронная функция (как и async fn() {}). Эта функция синхронно создаёт конечный автомат, который при передаче экзекутору асинхронно исполняется. Но обычно - да, особой путаницы не будет, если назвать такие функции асинхронными.
источник

AZ

Alex Zhukovsky in rust_offtopic
red75prime
Тут надо начать с того, что это действительно не асинхронная функция (как и async fn() {}). Эта функция синхронно создаёт конечный автомат, который при передаче экзекутору асинхронно исполняется. Но обычно - да, особой путаницы не будет, если назвать такие функции асинхронными.
async fn foo() {
   for _ in 0..10 {
       println!("begin foo");
       delay_for(Duration::from_millis(100)).await;
       println!("100 ms in foo have elapsed");
   }
}


Изначальный пример был такой
источник

AZ

Alex Zhukovsky in rust_offtopic
просто я убрал авейты потому что у человека путаница "флоу ждёт 100 миллисекунд - поэтому синхронная операция"
источник

AZ

Alex Zhukovsky in rust_offtopic
но это видимо не сильно помогло
источник

P

Pavel in rust_offtopic
Alex Zhukovsky
async fn foo() {
   for _ in 0..10 {
       println!("begin foo");
       delay_for(Duration::from_millis(100)).await;
       println!("100 ms in foo have elapsed");
   }
}


Изначальный пример был такой
внутри эта функция синхронная, потому что каждый её шаг полностью выполняется до того, как начнётся следующий. Но кто-то её может назвать асинхронной просто потому, что она дружественна асинхронному фреймворку и может добровольно делить вычислительные ресурсы с другими функциями дружественными асинхронному фреймворку.
источник

AZ

Alex Zhukovsky in rust_offtopic
Pavel
внутри эта функция синхронная, потому что каждый её шаг полностью выполняется до того, как начнётся следующий. Но кто-то её может назвать асинхронной просто потому, что она дружественна асинхронному фреймворку и может добровольно делить вычислительные ресурсы с другими функциями дружественными асинхронному фреймворку.
s/кто-то/все, кроме Павела

:)
источник

ЕС

Егор Савельев... in rust_offtopic
Pavel
асинхронная функция завершает выполнение после того, как вернула результат, синхронная — до. foo создала объекь и закончила выполнение, после чего вернула его.
Ссылка
В примере выше функция отдает управление экзекьютору после await.
источник