cloudkit 0.3.5

Safe Rust bindings for Apple's CloudKit framework — iCloud databases and sync on macOS
Documentation
use cloudkit::prelude::*;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let record = CKRecord::new("OperationRecord")?;
    let modify = CKModifyRecordsOperation::new(vec![record], vec![])
        .with_save_policy(CKRecordSavePolicy::ChangedKeys)
        .with_atomic(false);
    let query = CKQueryOperation::new(CKQuery::match_all("OperationRecord")).with_results_limit(1);
    let fetch_records = CKFetchRecordsOperation::new(vec![CKRecordID::new("operation-demo")]);
    let fetch_db_changes = CKFetchDatabaseChangesOperation::new().with_fetch_all_changes(false);
    let fetch_zone_changes = CKFetchRecordZoneChangesOperation::new(vec![CKRecordZoneID::new(
        "OpsZone",
        "__defaultOwner__",
    )]);

    println!(
        "modify records_to_save={} atomic={}",
        modify.records_to_save().len(),
        modify.atomic()
    );
    println!(
        "query limit={:?} fetch_records={} db_changes_fetch_all={} zone_changes={}",
        query.results_limit(),
        fetch_records.record_ids().len(),
        fetch_db_changes.fetch_all_changes(),
        fetch_zone_changes.zones().len()
    );
    println!("✅ operation area OK");
    Ok(())
}