pub enum StreamChunk {
Token(String),
Done,
Error(String),
}Expand description
One piece of a streamed model reply, delivered in order over the
Receiver that ModelAdapter::stream returns.
This enum is a frozen contract — every adapter (local, echo, cloud,
and anything built later) emits exactly these three variants, and every
consumer (the kopitiam ai chat loop today, a ratatui pane tomorrow)
matches on exactly these three. Don’t add or rename variants without
treating it as the breaking change it is.
A well-formed stream is: zero or more StreamChunk::Token, then
one terminal chunk — StreamChunk::Done on success or
StreamChunk::Error on failure — then nothing (the sender drops,
closing the channel).
Variants§
Token(String)
One decoded increment of the reply — in practice one model token’s
text (e.g. "Hel", "lo", " world"). Concatenating every
Token in arrival order rebuilds the full reply.
Honest caveat, inherited from kopitiam_runtime::generate’s
token-by-token decode: a single multi-byte Unicode character that a
tokenizer splits across two tokens can arrive split across two
Tokens. That’s the normal, accepted tradeoff of any streaming
LLM UI — the blocking complete() path decodes the whole sequence
together and never splits — so a caller that needs
character-perfect text mid-stream should buffer, but a chat UI that
just appends each Token to a pane is fine.
Done
The stream finished cleanly. Always the last chunk on a successful run; nothing follows it. Its arrival is how a consumer knows the reply is complete (as opposed to the model still thinking).
Error(String)
Generation failed partway. Always the last chunk on a failed run;
carries a human-readable reason (rendered from the underlying
anyhow error). Nothing follows it. Any Tokens that arrived before
it are still valid partial output — the failure just means the reply
is truncated, not that what came before is wrong.
Trait Implementations§
Source§impl Clone for StreamChunk
impl Clone for StreamChunk
Source§fn clone(&self) -> StreamChunk
fn clone(&self) -> StreamChunk
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for StreamChunk
impl Debug for StreamChunk
impl Eq for StreamChunk
Source§impl PartialEq for StreamChunk
impl PartialEq for StreamChunk
impl StructuralPartialEq for StreamChunk
Auto Trait Implementations§
impl Freeze for StreamChunk
impl RefUnwindSafe for StreamChunk
impl Send for StreamChunk
impl Sync for StreamChunk
impl Unpin for StreamChunk
impl UnsafeUnpin for StreamChunk
impl UnwindSafe for StreamChunk
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.