pub trait StreamCodec: Send + Sync {
// Required methods
fn format(&self) -> FormatId;
fn decode_event(
&self,
state: &mut StreamTranslationState,
event: &Value,
) -> Vec<LlmStreamEvent>;
fn encode_event(
&self,
state: &mut StreamTranslationState,
event: LlmStreamEvent,
) -> Vec<Value>;
fn finish(&self, state: &mut StreamTranslationState) -> Vec<Value>;
}Expand description
Codec contract for one provider streaming event format.
Required Methods§
Sourcefn decode_event(
&self,
state: &mut StreamTranslationState,
event: &Value,
) -> Vec<LlmStreamEvent>
fn decode_event( &self, state: &mut StreamTranslationState, event: &Value, ) -> Vec<LlmStreamEvent>
Decodes one provider event into zero or more neutral events.
Sourcefn encode_event(
&self,
state: &mut StreamTranslationState,
event: LlmStreamEvent,
) -> Vec<Value>
fn encode_event( &self, state: &mut StreamTranslationState, event: LlmStreamEvent, ) -> Vec<Value>
Encodes one neutral event into zero or more provider events.
Sourcefn finish(&self, state: &mut StreamTranslationState) -> Vec<Value>
fn finish(&self, state: &mut StreamTranslationState) -> Vec<Value>
Emits any terminal provider events needed after the source stream ends.
This is intentionally required on every codec. Some target formats
need explicit terminal events after the source closes (for example,
Anthropic message_delta/message_stop or Responses
response.completed). Formats that have no source-close work should
return an empty vector explicitly so the no-op behavior is a conscious
codec-level choice.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".