#[non_exhaustive]pub struct AutoFunctionStreamEvent {
pub chunk: AutoFunctionStreamChunk,
pub event_id: Option<String>,
}Expand description
Streaming event with position metadata for auto-function stream resumption.
This wrapper pairs an AutoFunctionStreamChunk with its event_id,
enabling stream resumption after network interruptions or reconnects.
§Stream Resumption
Save the event_id from each event. If the connection drops, you can resume
the stream from the last received event by calling get_interaction_stream()
with the saved event_id.
Note: The auto-function streaming loop is client-side. If interrupted during function execution, you may need to restart the full loop rather than resuming. However, the underlying API stream can be resumed.
§Example
use futures_util::StreamExt;
use genai_rs::{Client, AutoFunctionStreamEvent, AutoFunctionStreamChunk};
let client = Client::new("your-api-key".to_string());
let mut stream = client
.interaction()
.with_model("gemini-3-flash-preview")
.with_text("What's the weather in London?")
.create_stream_with_auto_functions();
let mut last_event_id: Option<String> = None;
while let Some(event) = stream.next().await {
let event = event?;
// Save event_id for potential resume
if let Some(id) = &event.event_id {
last_event_id = Some(id.clone());
}
match &event.chunk {
AutoFunctionStreamChunk::Delta(content) => {
if let Some(text) = content.as_text() {
print!("{}", text);
}
}
AutoFunctionStreamChunk::Complete(_) => {
println!("\n[Done]");
}
_ => {}
}
}Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.chunk: AutoFunctionStreamChunkThe auto-function stream chunk content
event_id: Option<String>Event ID for stream resumption.
Pass this to last_event_id when resuming a stream to continue from
this position. This is the event_id from the underlying API stream.
May be None for client-generated events (like ExecutingFunctions
and FunctionResults) that don’t come from the API stream.
Implementations§
Source§impl AutoFunctionStreamEvent
impl AutoFunctionStreamEvent
Sourcepub fn new(chunk: AutoFunctionStreamChunk, event_id: Option<String>) -> Self
pub fn new(chunk: AutoFunctionStreamChunk, event_id: Option<String>) -> Self
Creates a new auto-function stream event.
Sourcepub const fn is_complete(&self) -> bool
pub const fn is_complete(&self) -> bool
Check if the inner chunk is a Complete variant.
Sourcepub const fn is_unknown(&self) -> bool
pub const fn is_unknown(&self) -> bool
Check if the inner chunk is an Unknown variant.
Sourcepub fn unknown_chunk_type(&self) -> Option<&str>
pub fn unknown_chunk_type(&self) -> Option<&str>
Returns the unrecognized chunk type if this is an Unknown variant.
Sourcepub fn unknown_data(&self) -> Option<&Value>
pub fn unknown_data(&self) -> Option<&Value>
Returns the preserved JSON data if this is an Unknown variant.
Trait Implementations§
Source§impl Clone for AutoFunctionStreamEvent
impl Clone for AutoFunctionStreamEvent
Source§fn clone(&self) -> AutoFunctionStreamEvent
fn clone(&self) -> AutoFunctionStreamEvent
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AutoFunctionStreamEvent
impl Debug for AutoFunctionStreamEvent
Source§impl<'de> Deserialize<'de> for AutoFunctionStreamEvent
impl<'de> Deserialize<'de> for AutoFunctionStreamEvent
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for AutoFunctionStreamEvent
impl RefUnwindSafe for AutoFunctionStreamEvent
impl Send for AutoFunctionStreamEvent
impl Sync for AutoFunctionStreamEvent
impl Unpin for AutoFunctionStreamEvent
impl UnwindSafe for AutoFunctionStreamEvent
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);