kw static
Зарезервированное слово
Список слов: §1.4
Синтаксис
Receiver = [ "var" | "move" | "static" ] ;Static = "static" Ident ":" Type "=" Expr ;Грамматика: Прил. A
Определяется в
- 5.3 Перегрузка и пользовательские операторы — Перегрузка встроенных операторов — объявления op в impl
- 9.5 Пользовательские сериализаторы — Уровень 1 — представление через другой тип (Repr), действует во всех форматах и в схемах
- 4.1 Переменные и константы — Изменяемых глобальных переменных без sync нет.
- 4.5 impl и методы — Внутри метода доступны self и Self.
- 8.9 Программная транзакционная память — atomic { … } выполняет тело как сериализуемую транзакцию над TVar.
- 12.1 Объявление кластера — В программе не больше одного cluster.
- 1.4 Ключевые слова — Зарезервированные (нельзя использовать как имена)
Примеры
impl Vec3 {
static op +(a: Vec3, b: Vec3) -> Vec3 => Vec3(a.x + b.x, a.y + b.y, a.z + b.z)
static op *(v: Vec3, k: f32) -> Vec3 => Vec3(v.x * k, v.y * k, v.z * k)
static op -(v: Vec3) -> Vec3 => v * -1.0
op [](i: usize) -> f32 { … } // чтение по индексу
var op [](i: usize) -> &var f32 { … } // запись по индексу
op ()(t: f32) -> Vec3 { … } // вызов как функции
static op <=>(a: Vec3, b: Vec3) -> Ordering { … }
op as Vec4 => Vec4(x, y, z, 1.0)
}— 5.3 Перегрузка и пользовательские операторы
@repr(i64)
data Money { minor: i64 }
impl Repr<i64> for Money {
fn toRepr() -> i64 => minor
static fn fromRepr(v: i64) -> Money | DecodeError => Money{ minor: v }
}— 9.5 Пользовательские сериализаторы
Связанные диагностики
not-callable, not-overloadable, operator-decl, range-not-iterable, schema-attr, global-mutable, mutate-immutable, impl-foreign-type, unknown-method, atomic-effects, actor-not-hosted, cluster-auth, cluster-decl, cluster-needs