narrow/
lib.rs

1#![cfg_attr(not(feature = "derive"), doc = "# Narrow")]
2#![cfg_attr(feature = "derive", doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/README.md")))]
3#![doc(
4    html_logo_url = "https://raw.githubusercontent.com/mbrobbel/narrow/main/narrow.svg",
5    html_favicon_url = "https://raw.githubusercontent.com/mbrobbel/narrow/main/narrow.svg"
6)]
7#![cfg_attr(docsrs, feature(doc_cfg))]
8// The goal of the list of lints here is to help reduce complexity and improve consistency
9#![deny(
10    // Rustc
11    missing_copy_implementations,
12    // missing_debug_implementations,
13    missing_docs,
14    noop_method_call,
15    // warnings,
16    unused,
17    // Clippy
18    clippy::all,
19    clippy::suspicious,
20    clippy::style,
21    clippy::complexity,
22    clippy::perf,
23    clippy::pedantic,
24    // clippy::restrictions
25    // clippy::arithmetic_side_effects, TODO(mbrobbel): check all
26    clippy::as_conversions,
27    clippy::as_underscore,
28    clippy::clone_on_ref_ptr,
29    clippy::decimal_literal_representation,
30    clippy::empty_structs_with_brackets,
31    clippy::get_unwrap,
32    clippy::if_then_some_else_none,
33    clippy::missing_docs_in_private_items,
34    clippy::multiple_unsafe_ops_per_block,
35    clippy::pattern_type_mismatch,
36    clippy::rest_pat_in_fully_bound_structs,
37    clippy::same_name_method,
38    clippy::self_named_module_files,
39    clippy::semicolon_outside_block,
40    clippy::shadow_reuse,
41    clippy::shadow_same,
42    clippy::shadow_unrelated,
43    clippy::str_to_string,
44    clippy::string_add,
45    clippy::tests_outside_test_module,
46    clippy::undocumented_unsafe_blocks,
47    clippy::unnecessary_safety_comment,
48    clippy::unnecessary_safety_doc,
49    clippy::unnecessary_self_imports,
50    clippy::unneeded_field_pattern,
51    clippy::unseparated_literal_suffix,
52    clippy::unwrap_used,
53    // Rustdoc
54    // rustdoc::all
55)]
56#![allow(
57    clippy::module_name_repetitions,
58    clippy::pub_use,
59    unsafe_op_in_unsafe_fn
60)]
61
62mod fixed_size;
63pub use self::fixed_size::FixedSize;
64
65mod length;
66pub use self::length::Length;
67
68mod index;
69pub use self::index::Index;
70
71pub mod buffer;
72
73pub mod bitmap;
74
75mod nullability;
76pub use nullability::{NonNullable, Nullability, Nullable};
77
78// TODO(mbrobbel): pub(crate)
79pub mod offset;
80pub(crate) mod validity;
81
82pub mod array;
83
84pub mod logical;
85
86#[cfg(feature = "arrow-rs")]
87pub mod arrow;
88
89// Re-export arrow crates.
90#[cfg(feature = "arrow-rs")]
91pub use arrow_array;
92#[cfg(feature = "arrow-rs")]
93pub use arrow_buffer;
94#[cfg(feature = "arrow-rs")]
95pub use arrow_schema;
96
97// Re-export `narrow_derive` macros when the `derive` feature is enabled.
98#[cfg(feature = "derive")]
99pub use narrow_derive::ArrayType;
100
101// This allows using the `ArrayType` derive macro in tests.
102#[cfg(any(all(test, feature = "derive"), feature = "map"))]
103extern crate self as narrow;