Skip to main content

StreamEvent

Enum StreamEvent 

Source
#[non_exhaustive]
pub enum StreamEvent { TextDelta { text: String, }, ToolCallStart { id: CallId, name: String, }, ToolCallDelta { id: CallId, arguments_fragment: String, }, ToolCallEnd { id: CallId, }, Usage { usage: TokenUsage, }, ResponseId { id: String, }, Warning { warning: ResponseWarning, }, Finish { reason: FinishReason, }, }
Expand description

One increment of a streamed answer.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

TextDelta

More prose.

Fields

§text: String

The fragment. Concatenated verbatim; adapters do not trim.

§

ToolCallStart

A tool call begins. Must precede any fragment for the same id.

Fields

§id: CallId

Provider-assigned id.

§name: String

Tool name.

§

ToolCallDelta

More argument bytes for a call already started.

Fields

§id: CallId

Which call.

§arguments_fragment: String

A fragment of the JSON arguments. Rarely valid JSON on its own.

§

ToolCallEnd

A tool call’s arguments are complete.

Fields

§id: CallId

Which call.

§

Usage

Reported token usage. Providers send it once, at the end; a later report replaces an earlier one.

Fields

§usage: TokenUsage

The counts.

§

ResponseId

The provider’s own response identifier, as soon as the wire reveals it.

Most vendors put it on the first frame — an OpenAI chunk’s id, an Anthropic message_start, a Gemini responseId — so the caller no longer has to seed it out of band to have it on the rebuilt response. A later identifier replaces an earlier one.

Fields

§id: String

The identifier. For a support ticket; never a body, never a header.

§

Warning

Something the adapter wants the caller to know without failing the call.

The streamed path reports exactly what the whole path reports. Without this event an adapter that had to drop a stop sequence or a cache hint could say so in ModelResponse::warnings when called whole, and had nowhere to say it when called streamed — which made the same call honest one way and silent the other.

Fields

§warning: ResponseWarning

What was given up.

§

Finish

Generation stopped. Exactly one per stream, and it must arrive.

Fields

§reason: FinishReason

Why.

Implementations§

Source§

impl StreamEvent

Source

pub fn text(text: impl Into<String>) -> Self

A text delta.

Source

pub fn tool_call_start(id: impl Into<CallId>, name: impl Into<String>) -> Self

A tool-call announcement.

Source

pub fn tool_call_delta( id: impl Into<CallId>, fragment: impl Into<String>, ) -> Self

An argument fragment.

Source

pub fn tool_call_end(id: impl Into<CallId>) -> Self

A tool-call terminator.

Source

pub fn response_id(id: impl Into<String>) -> Self

The provider’s response identifier.

Source

pub const fn warning(warning: ResponseWarning) -> Self

A warning the adapter wants carried into the rebuilt response.

Source

pub const fn kind(&self) -> &'static str

Stable snake-case label.

Source

pub const fn is_user_visible(&self) -> bool

Returns true for the events a UI may render directly (spec §18.5: only model-authored prose is streamed to the user).

Trait Implementations§

Source§

impl Clone for StreamEvent

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StreamEvent

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for StreamEvent

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for StreamEvent

Source§

impl PartialEq for StreamEvent

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for StreamEvent

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for StreamEvent

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more