kw interface
Зарезервированное слово
Список слов: §1.4
Синтаксис
Interface = "interface" Ident [ Generics ] "{" { IMember } "}" ;Грамматика: Прил. A
Определяется в
- 4.6 Интерфейсы — Интерфейсы структурные
- 4.5 impl и методы — Внутри метода доступны self и Self.
- 3.4 Объявляемые типы — data — тип-произведение с именованными полями (§4.2).
- 9.5 Пользовательские сериализаторы — Уровень 1 — представление через другой тип (Repr), действует во всех форматах и в схемах
- 10.2 Атрибуты rpc — Значения по умолчанию для всех rpc задаются в cluster { defaults { …
- 1.4 Ключевые слова — Зарезервированные (нельзя использовать как имена)
Примеры
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 // статическая проверкаimpl Money {
pub const ZERO: Money = Money{ minor: 0 }
pub const MAX_TRANSFER: Money = Money.rub(1_000_000)
}
interface Codec<T> { const NAME: str } // реализация обязана задать значение
impl Codec<Point> for GeoHashCodec { const NAME: str = "geohash" }Связанные диагностики
explicit-interface, interface-not-satisfied, impl-foreign-type, unknown-method, unknown-type, schema-attr, attribute-not-applicable, cache-not-readonly, invalid-window, retry-not-idempotent, rpc-attr