kw assert
Зарезервированное слово
Список слов: §1.4
Синтаксис
Assert = "assert" Type ":" Bounds ;Грамматика: Прил. A
Определяется в
- 18.2 Утверждения и фикстуры — assert expr выполняется во всех профилях, включая prod (профили отключают только контракты, §6.7, и вывод dbg, §2.2); при падении печатает з
- 0.2 Нотация — Грамматика записана в EBNF (приложение A)
- 1.4 Ключевые слова — Зарезервированные (нельзя использовать как имена)
- 4.6 Интерфейсы — Интерфейсы структурные
- 18.3 Моки — mock S { … } подменяет сервис, интерфейс или актор в пределах теста.
- 18.4 Симуляция — В sim детерминированы планировщик, сеть, часы, случайность и отказы диска; результат зависит только от seed.
Примеры
pub(api) interface Storage {
fn get(k: str) -> bytes? io
var fn put(k: str, v: bytes) io
fn has(k: str) -> bool io => get(k) != none // метод по умолчанию
}
interface ReadWrite { embed Reader; embed Writer }
interface Container<T> { type Item = T; fn items() -> iter<T> }
@explicit interface Persistent { fn key() -> str }
assert FileStorage: Storage // статическая проверкаmock Payments {
charge(_) => fail Timeout once, then Receipt{ id: 1 }
refund(id) if id > 0 => Ok always
}
assert Payments.calls(.charge).count == 2Связанные диагностики
fixture-yield, explicit-interface, interface-not-satisfied, mock-decl