II.3 Сводка встроенных атрибутов
| Атрибут | Применяется к | Раздел |
|---|---|---|
@derive(I, …) | data, enum, distinct | §4.6 |
@sealed | data | §4.3 |
@explicit | interface | §4.6 |
@open | enum | §4.4 |
@error | data, enum | §6.5 |
@reflect | тип | §15.2 |
@v(n), @since(n), @removed(n), @tag(n), @renamed(from) | тип, поле | §9.2 |
@repr(W), @codec(…), @zigzag, @preserve_unknown | тип, поле | §9.3–9.5 |
@grpc_status(code) | тип ошибки | §10.1 |
@table, @pk, @auto, @index, @shard | data, поле | §12.8 |
@isolation(level) | функция с atomic(db) | §11.2 |
@owner, @visible, @encrypted, @audit | таблица, поле, rpc | §13 |
@public, @allow(…) | rpc | §13.4 |
@timeout, @retry, @idempotent, @readonly, @cache, @ratelimit, @resumable, @window, @trace | rpc | §10.2 |
@retain | topic | §10.5 |
@parallel(n) | pipeline | §10.6 |
@idle(d), @transient | actor, поле актора | §12.5 |
@near(expr), @pinned, @nonblocking | функция, актор, extern-функция | §8.1, §12.6 |
@tag(…), @skip, @flaky, @test_only | тест, объявление | §18 |
@deprecated(msg), @inline, @cold | любое объявление | II.3 |
@tag(n) с целым аргументом на поле — номер поля; @tag(метки…) на тесте — метки отбора.
Также: @internal (rpc, недоступен внешним принципалам, §13.4), @c_layout (data для FFI, §16.1), @flaky(retries: n) и @skip(причина) (тест, §18.1), @must_close(by: метод?) (тип, §4.3).
Определяется реализацией. Подсказки оптимизатору (D-8063; D-7690, D-7691).
@inlineи@coldнаfnи функцииstd.opt.likely(c),unlikely(c)— подсказки: они не меняют результатов программы, реализация МОЖЕТ их игнорировать. Эта реализация:@inlineзадаёт LLVM-атрибутalwaysinline,@cold—cold(аргументы атрибутов игнорируются без диагностики);likely(c)иunlikely(c)возвращаютcи передают ожидание генератору кода (llvm.expect).@arena(арена запроса, §7.4) не реализован: размещение в арене остаётся оптимизацией, на которую можно не рассчитывать.
Исходник: docs/spec/oxl-standard.md