nabled_core/lib.rs
1//! Core shared types and utilities for the `nabled` workspace.
2//!
3//! `nabled-core` is the common substrate used by `nabled-linalg` and
4//! `nabled-ml`. It intentionally stays lightweight and focused on:
5//!
6//! 1. Shared error taxonomy (`ShapeError`, `NabledError`, `IntoNabledError`).
7//! 2. Reusable shape/validation helpers over ndarray inputs.
8//! 3. Prelude exports for ndarray and complex number types.
9//!
10//! # Main Modules
11//!
12//! 1. [`errors`]: shared error contracts used across workspace crates.
13//! 2. [`validation`]: reusable ndarray validation helpers.
14//! 3. [`prelude`]: common array/scalar and complex-number type exports.
15//! 4. [`scalar`]: shared real-scalar trait bounds (`f32`/`f64`).
16//!
17//! # Example
18//!
19//! ```rust
20//! use ndarray::{arr1, arr2};
21//! use nabled_core::validation::validate_square_system;
22//!
23//! let a = arr2(&[[2.0_f64, 1.0], [1.0, 2.0]]);
24//! let b = arr1(&[1.0_f64, 1.0]);
25//! validate_square_system(&a, &b)?;
26//! # Ok::<(), nabled_core::errors::ShapeError>(())
27//! ```
28
29pub mod errors;
30pub mod prelude {
31 pub use ndarray::{
32 Array, Array1, Array2, Array3, ArrayD, ArrayView1, ArrayView2, ArrayView3, ArrayViewMut1,
33 ArrayViewMut2, ArrayViewMut3,
34 };
35 pub use num_complex::{Complex32, Complex64};
36
37 pub use crate::scalar::NabledReal;
38}
39pub mod scalar;
40pub mod validation;