concision_linear/
primitives.rs

1/*
2    Appellation: primitives <module>
3    Contrib: FL03 <jo3mccain@icloud.com>
4*/
5pub use self::params::*;
6use nd::{ArrayBase, Ix0, Ix1};
7
8pub(crate) type Pair<A, B = A> = (A, B);
9
10pub(crate) type MaybePair<A, B = A> = Pair<A, Option<B>>;
11
12pub(crate) type NodeBase<S, D = Ix1, E = Ix0> = MaybePair<ArrayBase<S, D>, ArrayBase<S, E>>;
13
14pub(crate) type Node<A = f64, D = Ix1, E = Ix0> = NodeBase<nd::OwnedRepr<A>, D, E>;
15
16pub(crate) mod params {
17
18    macro_rules! params_ty {
19        ($($name:ident<$repr:ident>),* $(,)?) => {
20            $(params_ty!(@impl $name<$repr>);)*
21        };
22        (@impl $name:ident<$repr:ident>) => {
23            pub type $name<T = f64, K = $crate::params::Biased, D = ndarray::Ix2> = $crate::params::ParamsBase<ndarray::$repr<T>, D, K>;
24        };
25    }
26
27    params_ty!(LinearParams<OwnedRepr>, LinearParamsShared<OwnedArcRepr>,);
28}