lance_namespace_impls/lib.rs
1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright The Lance Authors
3
4//! Lance Namespace implementations.
5//!
6//! This crate provides various implementations of the Lance Namespace trait.
7//!
8//! ## Features
9//!
10//! - `rest`: REST API-based namespace implementation
11//! - `dir-aws`, `dir-azure`, `dir-gcp`, `dir-oss`: Cloud storage backend support for directory namespace (via lance-io)
12//!
13//! ## Implementations
14//!
15//! - `DirectoryNamespace`: Directory-based implementation (always available)
16//! - `RestNamespace`: REST API-based implementation (requires `rest` feature)
17//!
18//! ## Usage
19//!
20//! The recommended way to connect to a namespace is using [`ConnectBuilder`]:
21//!
22//! ```no_run
23//! # use lance_namespace_impls::ConnectBuilder;
24//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
25//! let namespace = ConnectBuilder::new("dir")
26//! .property("root", "/path/to/data")
27//! .connect()
28//! .await?;
29//! # Ok(())
30//! # }
31//! ```
32
33pub mod connect;
34pub mod dir;
35
36#[cfg(feature = "rest")]
37pub mod rest;
38
39// Re-export connect builder
40pub use connect::ConnectBuilder;
41pub use dir::{DirectoryNamespace, DirectoryNamespaceBuilder};
42
43#[cfg(feature = "rest")]
44pub use rest::{RestNamespace, RestNamespaceBuilder};