iceberg_rust/lib.rs
1#![deny(missing_docs)]
2//! Apache Iceberg implementation in Rust
3//!
4//! This crate provides a native Rust implementation of [Apache Iceberg](https://iceberg.apache.org/),
5//! a table format for large analytic datasets. Iceberg manages large collections of files as tables,
6//! while providing atomic updates and concurrent writes.
7//!
8//! # Features
9//!
10//! * Table operations (create, read, update, delete)
11//! * Schema evolution
12//! * Hidden partitioning
13//! * Time travel and snapshot isolation
14//! * View and materialized view support
15//! * Multiple catalog implementations (REST, AWS Glue, File-based)
16//! * Table maintenance operations (snapshot expiration, orphan file cleanup)
17//!
18//! # Components
19//!
20//! The main components of this crate are:
21//!
22//! * [`table`] - Core table operations and management
23//! * [`catalog`] - Catalog implementations for metadata storage
24//! * [`arrow`] - Integration with Apache Arrow
25//! * [`view`] - View and materialized view support
26//! * [`error`] - Error types and handling
27//!
28//! # Example
29//!
30//! ```rust,no_run
31//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
32//! use iceberg_rust::table::Table;
33//! use iceberg_rust::catalog::Catalog;
34//!
35//! // Create a new table
36//! let mut table = Table::builder()
37//! .with_name("example_table")
38//! .with_schema(schema)
39//! .build()
40//! .await?;
41//!
42//! // Start a transaction
43//! table.new_transaction(None)
44//! .update_schema(new_schema)
45//! .commit()
46//! .await?;
47//!
48//! // Expire old snapshots for maintenance
49//! table
50//! .new_transaction(None)
51//! .expire_snapshots(
52//! Some(chrono::Utc::now().timestamp_millis() - 30 * 24 * 60 * 60 * 1000),
53//! Some(10),
54//! true,
55//! true,
56//! false,
57//! )
58//! .commit()
59//! .await?;
60//! # Ok(())
61//! # }
62//! ```
63
64pub mod arrow;
65pub mod catalog;
66pub mod error;
67pub mod file_format;
68pub mod materialized_view;
69pub mod object_store;
70pub mod spec;
71pub mod sql;
72pub mod table;
73pub(crate) mod util;
74pub mod view;