ir_sink API

Luna-Flow/mare_mark/ir_sink は event の上にある小さなファサードで、アプリケーションが最もよく使うシンクのための 4 つの名前付きコンストラクタを提供します。各関数は同じ目的の event の関数を呼び出すだけで、振る舞いを追加しません。

ソース: src/ir_sink/ir_sink.mbt。

import {
  "Luna-Flow/mare_mark/ir_sink",
  "Luna-Flow/mare_mark/model",
}

in_memory

in_memory は新しい @event.InMemorySink を返します。

pub fn in_memory() -> @event.InMemorySink

jsonl

jsonl は新しい @event.JsonlSink を返します。

pub fn jsonl() -> @event.JsonlSink

jsonl_stream

jsonl_stream は @event.streaming_jsonl(write_line, location) を返します。

pub fn jsonl_stream((String) -> Unit, String) -> @event.ObservationSink

tee

tee は @event.tee(left, right) を返します。

pub fn tee(@event.ObservationSink, @event.ObservationSink) -> @event.ObservationSink
test "ir_sink constructors" {
  let memory = @ir_sink.in_memory()
  let record = @ir_sink.jsonl()
  let sink = @ir_sink.tee(memory.as_sink(), record.as_sink())
  inspect((sink.finish)(@model.RunSummary::new("r", 0, 0, 0, true, None)), content="jsonl://memory/r")
  inspect(record.lines.length(), content="1")
}