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

4.8 Дженерики

oxl
fn max<T>(a: T, b: T) -> T where T: Ord => if a > b { a } else { b }
data Page<T> where T: Serializable { items: List<T>; next: Cursor? }
data Matrix<const R: usize, const C: usize> { cells: [f64; R * C] }
fn pack<T>(x: T) -> bytes where T: Serializable, size_of(T) <= 4KiB
data Cache<K: Hash + Eq, V = bytes> { … }
  • Параметры: типовые T, константные const N: Type (примитивы, str, enum без полей).
  • Ограничения: интерфейсы (T: A + B) и comptime-предикаты.
  • Реализация ДОЛЖНА мономорфизировать дженерики; dyn I — единственный способ стирания типа.
  • Дженерики инвариантны. Аргументы выводятся по аргументам вызова и ожидаемому типу; при неоднозначности — ошибка.
  • Специализации нет.

bound-not-satisfied, generic-args

См. также

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