Crate claudecode

Crate claudecode 

Source
Expand description

§ClaudeCode-RS

A Rust SDK for programmatically interacting with Claude Code.

§Quick Start

use claudecode::{Client, SessionConfig, Model, OutputFormat};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create a client
    let client = Client::new().await?;
     
    // Simple query
    let config = SessionConfig::builder("Hello, Claude!")
        .model(Model::Sonnet)
        .build()?;
     
    let result = client.launch_and_wait(config).await?;
    println!("Claude says: {}", result.content.unwrap_or_default());
     
    Ok(())
}

§Streaming Events

use claudecode::{Client, SessionConfig, OutputFormat, Event};
use futures::StreamExt;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new().await?;
     
    let config = SessionConfig::builder("Tell me a story")
        .output_format(OutputFormat::StreamingJson)
        .build()?;
     
    let mut session = client.launch(config).await?;
     
    // Process streaming events with type-safe pattern matching
    if let Some(mut events) = session.take_event_stream() {
        while let Some(event) = events.recv().await {
            match event {
                Event::Assistant(msg) => {
                    println!("Claude: {:?}", msg.message.content);
                }
                Event::Result(result) => {
                    println!("Total cost: ${:?}", result.total_cost_usd);
                }
                _ => {}
            }
        }
    }
     
    let result = session.wait().await?;
    Ok(())
}

Re-exports§

pub use client::Client;
pub use config::MCPConfig;
pub use config::MCPServer;
pub use config::SessionConfig;
pub use config::SessionConfigBuilder;
pub use error::ClaudeError;
pub use error::Result;
pub use session::Session;
pub use types::AssistantEvent;
pub use types::Content;
pub use types::ErrorEvent;
pub use types::Event;
pub use types::MCPStatus;
pub use types::Message;
pub use types::Model;
pub use types::OutputFormat;
pub use types::Result as ClaudeResult;
pub use types::ResultEvent;
pub use types::ServerToolUse;
pub use types::SystemEvent;
pub use types::Usage;

Modules§

client
config
error
process
session
stream
types

Constants§

VERSION