OxL Справочник OxL
РусскийEnglish

4.5 impl и методы

Объявление в implПолучатель
fn m()&self
var fn m()&var self
move fn m()self по значению (перемещение)
static fn m()нет, вызов T.m()
init m()конструктор (§4.3)
op +(…)оператор (§5.3)
  • Внутри метода доступны self и Self. Поля и методы доступны без self., если имя не затенено локальной переменной.
  • impl T { … } ДОЛЖЕН находиться в пакете, объявившем T.
  • impl I for T { … } — явная реализация интерфейса. Допускается, если I или T объявлены в текущем пакете.

Ассоциированные константы. const ИМЯ: T = e внутри impl T или interface объявляет константу типа, доступную как T.ИМЯ:

oxl
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" }
  • e ДОЛЖНО быть comptime-выражением; вызовы допустимы только к comptime-функциям и конструкторам без эффектов.
  • Константа интерфейса без значения обязательна для реализации; со значением — значение по умолчанию.
  • Ассоциированные константы допустимы в аргументах атрибутов (@timeout(Limits.CHECKOUT)).

impl-foreign-type, unknown-method

См. также

Исходник: docs/spec/oxl-standard.md