use etcd_client::*;
#[tokio::main]
async fn main() -> Result<(), Error> {
let mut client = Client::connect(["localhost:2379"], None).await?;
println!("try to lock with name \'lock-test\'");
let resp = client.lock("lock-test", None).await?;
let key = resp.key();
let key_str = std::str::from_utf8(key)?;
println!("the key is {key_str:?}");
println!("try to unlock it");
client.unlock(key).await?;
println!("finish!");
println!();
let resp = client.lease_grant(60, None).await?;
println!(
"grant a lease with id {:?}, ttl {:?}",
resp.id(),
resp.ttl()
);
let lease_id = resp.id();
println!("try to lock with name \'lock-test2\' and lease {lease_id:?}");
let lock_options = LockOptions::new().with_lease(lease_id);
let resp = client.lock("lock-test2", Some(lock_options)).await?;
let key = resp.key();
let key_str = std::str::from_utf8(key);
println!("the key is {key_str:?}");
println!("try to unlock it");
client.unlock(key).await?;
println!("finish!");
Ok(())
}