cloudkit 0.3.8

Safe Rust bindings for Apple's CloudKit framework — iCloud databases and sync on macOS
Documentation
use std::sync::mpsc;
use std::time::Duration;

use cloudkit::prelude::*;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    println!("== CloudKit.framework smoke ==");

    let container = CKContainer::default();
    let (tx, rx) = mpsc::channel();
    container.account_status_with_completion_handler(move |result| {
        let _ = tx.send(result);
    })?;

    match rx.recv_timeout(Duration::from_secs(30))? {
        Ok(status) => println!("account status: {status}"),
        Err(error) => {
            println!("account status error: {error}");
            if error.is_entitlement_or_account_issue() {
                println!(
                    "note: this is expected for unsigned CLI binaries, missing CloudKit entitlements, or Macs without an iCloud account."
                );
            }
        }
    }

    println!("✅ cloudkit container OK");
    Ok(())
}