import Prerequisites from "/snippets/standard-prerequisites.mdx"
To send data from a Rust app to Axiom, use the Axiom Rust SDK.
Install SDK
Add the following to your Cargo.toml:
[dependencies]
axiom-rs = "VERSION"Replace VERSION with the latest version number specified on the GitHub Releases page. For example, 0.11.0.
If you use the Axiom CLI, run eval $(axiom config export -f) to configure your environment variables. Otherwise, create an API token and export it as AXIOM_TOKEN.
Use client
use axiom_rs::Client;
use serde_json::json;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Build your client by providing a personal token and an org id:
let client = Client::builder()
.with_token("API_TOKEN")
.build()?;
// Alternatively, auto-configure the client from the environment variable AXIOM_TOKEN:
let client = Client::new()?;
client.datasets().create("DATASET_NAME", "").await?;
client
.ingest(
"DATASET_NAME",
vec![json!({
"foo": "bar",
})],
)
.await?;
let res = client
.query(r#"['DATASET_NAME'] | where foo == "bar" | limit 100"#, None)
.await?;
println!("{:?}", res);
client.datasets().delete("DATASET_NAME").await?;
Ok(())
}For more examples, see the examples in GitHub.
Optional features
You can use the Cargo features:
default-tls: Provides TLS support to connect over HTTPS. Enabled by default.native-tls: Enables TLS functionality provided bynative-tls.rustls-tls: Enables TLS functionality provided byrustls.tokio: Enables usage with thetokioruntime. Enabled by default.async-std: Enables usage with theasync-stdruntime.