Skip to main content

query

Function query 

Source
pub async fn query(
    prompt: &str,
    options: ClaudeAgentOptions,
) -> Result<ReceiverStream<Result<Message>>>
Expand description

Execute a one-shot query against the Claude CLI and return a stream of messages.

This is the simplest API - it handles connection, init handshake, sending the prompt, and returns a stream of messages until the result message arrives.

ยงExample

use claude_code_rs::{ClaudeAgentOptions, Message};
use claude_code_rs::query_fn::query;
use tokio_stream::StreamExt;

let options = ClaudeAgentOptions {
    max_turns: Some(3),
    ..Default::default()
};

let mut stream = query("What is 2+2?", options).await?;
while let Some(msg) = stream.next().await {
    match msg? {
        Message::Assistant { message } => {
            if let Some(text) = message.content.iter()
                .find_map(|b| b.as_text()) {
                print!("{text}");
            }
        }
        Message::Result { result } => {
            println!("\n[done, cost: {:?}]", result.total_cost_usd);
            break;
        }
        _ => {}
    }
}