6.2 Эффекты
| Эффект | Что разрешает |
|---|---|
io | файлы, процессы, переменные окружения, stdout/stderr |
net | сеть: rpc, стримы, акторы, кластер, HTTP |
db | ORM, std.kv, встроенное хранилище |
time | чтение часов, sleep, таймеры |
rand | случайные числа |
- Набор эффектов пишется после возвращаемого типа через запятую:
-> User | NotFound net, db.pure— пустой набор. - Функция МОЖЕТ вызывать только функции, эффекты которых входят в её набор. Нарушение — ошибка компиляции.
- Эффекты приватных функций выводятся. Функции
pub(api)ДОЛЖНЫ объявлять эффекты явно (илиpure). - Полиморфизм по эффектам:
fn map<T, U, effect F>(xs: List<T>, f: fn(T) -> U F) -> List<U> F. - Паника эффектом не является и возможна в любой функции.
- Функция с любым из эффектов
io,net,db,time— приостанавливаемая: может уступить поток планировщику (§8.2).pure- иrand-функции не приостанавливаются.
Связанные диагностики
См. также
Исходник: docs/spec/oxl-standard.md