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;