Size: a a a

2020 July 28

uユ

und ユビキタス in // CIPHERNET
источник

H

Hirrolot in // CIPHERNET
в расте вообще дохуя видов функций
источник

M

MrSmith in // CIPHERNET
Hirrolot
одна из рациональных причин — просто уметь комбинировать эффекты. ты в расте этого не сможешь сделать, например, будешь указатель на функцию принимать в своей foo. если это указатель на конст функцию — const foo, если нет — просто foo
Псевдокод напиши
источник

H

Hirrolot in // CIPHERNET
Fn, FnMut, FnOnce, fn, + сырые указатели на функции
источник

M

MrSmith in // CIPHERNET
Я не понял
источник

H

Hirrolot in // CIPHERNET
MrSmith
Псевдокод напиши
foo(fn: impl Fn(i32) -> i32) { ... }
const foo(fn: impl const Fn(i32) -> i32) { ... }
источник

H

Hirrolot in // CIPHERNET
такое закодировать одной сигнатурой с одним телом
источник

M

MrSmith in // CIPHERNET
Смысла не имеет
источник

H

Hirrolot in // CIPHERNET
увы, не сможешь без комбинируемых эффектов, потому что const — это тоже эффект
источник

H

Hirrolot in // CIPHERNET
MrSmith
Смысла не имеет
Почему?
источник

M

MrSmith in // CIPHERNET
Я вроде писал уже о своем представлении compile тайма
источник

H

Hirrolot in // CIPHERNET
Почему тогда Vec::default и Vec::new делают одно и то же, но первый неконстантный, а второй — да?
источник

H

Hirrolot in // CIPHERNET
потому что Default эффекты не учитывает
источник

M

MrSmith in // CIPHERNET
источник

M

MrSmith in // CIPHERNET
Я бы как в жс сделал кстати await some(), const some()
источник

M

MrSmith in // CIPHERNET
Растровый вариант с some().await диковат имхо
источник

M

MrSmith in // CIPHERNET
Оправдание с чейнингом слабовато
источник

H

Hirrolot in // CIPHERNET
если бы позволили делать иерархию комбинируемых эффектов, то по-умолчанию Default был бы с эффектом const, а если ты хочешь I/O — уже понижается до I/O эффекта
источник

H

Hirrolot in // CIPHERNET
если так, то и default, и new в Vec были бы const
источник

H

Hirrolot in // CIPHERNET
это как пример зачем эффекты комбинируемые нужны
источник