sdk-patterns-rust
Installation
SKILL.md
SDK Patterns — Rust
CAS Optimistic Locking
Read-modify-write without pessimistic locks. Retry on CasMismatch.
use couchbase::error::ErrorKind;
use couchbase::options::kv_options::ReplaceOptions;
use std::future::Future;
async fn update_with_cas(
collection: &couchbase::collection::Collection,
key: &str,
) -> Result<(), couchbase::error::Error> {
loop {
let get_result = collection.get(key, None).await?;
let mut doc: serde_json::Value = get_result.content_as()?;
doc["updated_at"] = serde_json::json!(chrono::Utc::now().timestamp());