azure-cosmos-rust

Azure Cosmos DB SDK for Rust

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "azure-cosmos-rust" with this command: npx skills add claudedjale/skillset/claudedjale-skillset-azure-cosmos-rust

Azure Cosmos DB SDK for Rust

Client library for Azure Cosmos DB NoSQL API — globally distributed, multi-model database.

Installation

cargo add azure_data_cosmos azure_identity

Environment Variables

COSMOS_ENDPOINT=https://<account>.documents.azure.com:443/ COSMOS_DATABASE=mydb COSMOS_CONTAINER=mycontainer

Authentication

use azure_identity::DeveloperToolsCredential; use azure_data_cosmos::CosmosClient;

let credential = DeveloperToolsCredential::new(None)?; let client = CosmosClient::new( "https://<account>.documents.azure.com:443/", credential.clone(), None, )?;

Client Hierarchy

Client Purpose Get From

CosmosClient

Account-level operations Direct instantiation

DatabaseClient

Database operations client.database_client()

ContainerClient

Container/item operations database.container_client()

Core Workflow

Get Database and Container Clients

let database = client.database_client("myDatabase"); let container = database.container_client("myContainer");

Create Item

use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize)] struct Item { pub id: String, pub partition_key: String, pub value: String, }

let item = Item { id: "1".into(), partition_key: "partition1".into(), value: "hello".into(), };

container.create_item("partition1", item, None).await?;

Read Item

let response = container.read_item("partition1", "1", None).await?; let item: Item = response.into_model()?;

Replace Item

let mut item: Item = container.read_item("partition1", "1", None).await?.into_model()?; item.value = "updated".into();

container.replace_item("partition1", "1", item, None).await?;

Patch Item

use azure_data_cosmos::models::PatchDocument;

let patch = PatchDocument::default() .with_add("/newField", "newValue")? .with_remove("/oldField")?;

container.patch_item("partition1", "1", patch, None).await?;

Delete Item

container.delete_item("partition1", "1", None).await?;

Key Auth (Optional)

Enable key-based authentication with feature flag:

cargo add azure_data_cosmos --features key_auth

Best Practices

  • Always specify partition key — required for point reads and writes

  • Use into_model()? — to deserialize responses into your types

  • Derive Serialize and Deserialize — for all document types

  • Use Entra ID auth — prefer DeveloperToolsCredential over key auth

  • Reuse client instances — clients are thread-safe and reusable

Reference Links

Resource Link

API Reference https://docs.rs/azure_data_cosmos

Source Code https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/cosmos/azure_data_cosmos

crates.io https://crates.io/crates/azure_data_cosmos

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

azure-observability

No summary provided by upstream source.

Repository SourceNeeds Review
General

azure-appconfiguration-java

No summary provided by upstream source.

Repository SourceNeeds Review
General

copilot-sdk

No summary provided by upstream source.

Repository SourceNeeds Review
General

skill-creator

No summary provided by upstream source.

Repository SourceNeeds Review