Size: a a a

2021 May 28

ΑZ

Αλεχ Zhukovsky in rust_offtopic
получишь как ИО выглядит
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
почитай мою статью про монады там все расписано
источник

AN

Alex Noname in rust_offtopic
Я ктому что допустим у меня async fn foo() { f(getLine().await, getLine().await) }.
источник

AN

Alex Noname in rust_offtopic
как он знает что getLine() надо реально два раза вызвать а не сооптимизировать до одного?
источник

AN

Alex Noname in rust_offtopic
кстати ты обещал вторую часть емнип 🤣
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
для IO запрещены оптимизации такого рода
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
вот и все
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
точнее не так
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
ты можешь написать

async fn foo() {  
 var getLine = getLine();
 f(getline.await, getline.await);
}.

И
получишь ровно тот же результат
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
у тебя же ссылочная прозрачность
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
вызов функции и её результат одно и то же
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
ну давай представим что у нас не консольный ИО а SQL. тогда это такая же разница как:

async fn foo() { f("SELECT * FROM TABLEW".await, "SELECT * FROM TABLEW".await) }.
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
и
async fn foo() {  
 var sqlSelect = "SELECT * FROM TABLE";
 f(sqlSelect.await, sqlSelect.await);
}.
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
у тебя есть некий описатель запроса
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
и выполнение
источник

AN

Alex Noname in rust_offtopic
ну да какая то магия монад кароче. что я не могу закэшировать результат таким образом.
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
да нет там никакой магии
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
все максимально тупо
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
вот ио на расте в 50 строк
источник