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

II.2 Ключевые сигнатуры

oxl
// std.task
fn all<T..., E...>(lazy ...ts: Task<T, E>) -> (T...) | E...
fn race<T..., E...>(lazy ...ts: Task<T, E>) -> T... | E...
fn any<T...>(lazy ...ts: Task<T, _>) -> T... | AllFailed
fn chan<T>(cap: usize) -> (Sender<T>, Receiver<T>)
fn shield<T>(body: fn() -> T) -> T

// std.stream
fn filter<T, E>(s: stream<T, E>, p: fn(&T) -> bool) -> stream<T, E>
fn map<T, U, E>(s: stream<T, E>, f: fn(T) -> U) -> stream<U, E>
fn window<T, E>(s: stream<T, E>, d: Duration) -> stream<List<T>, E>  time
fn batch<T, E>(s: stream<T, E>, n: usize, d: Duration) -> stream<List<T>, E>  time
fn merge<T, E>(...ss: stream<T, E>) -> stream<T, E>
data Broadcast<T> { … }
impl Broadcast<T> {
  init new(buffer: usize, slow: SlowPolicy = .Block, replay: usize = 0) -> Self
  fn publish(x: T)  time
  fn subscribe() -> stream<Shared<T>, Lagged>
  fn subscribers() -> usize
  move fn close()
}

// std.time
fn after(d: Duration, body: fn())  time
fn every(d: Duration, missed: Missed = .Skip, body: fn())  time
fn at(schedule: Schedule, body: fn())  time

// std.ser
fn encode<T: Serializable>(x: &T, fmt: Format = formats.oxl) -> bytes | EncodeError
fn decode<T: Serializable>(b: &bytes, fmt: Format = formats.oxl) -> T | DecodeError
fn decode_view<T: Serializable>(b: &bytes) -> view T | DecodeError

Broadcast<T>(…) в §10.4 — сокращение для Broadcast<T>.new(…): вызов типа с аргументами вызывает его единственный init new.

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