use super::{DatasetBase, Records};
use ndarray::{ArrayBase, Axis, Data, Dimension};
impl<F, S: Data<Elem = F>, I: Dimension> Records for ArrayBase<S, I> {
type Elem = F;
fn nsamples(&self) -> usize {
self.len_of(Axis(0))
}
fn nfeatures(&self) -> usize {
self.len_of(Axis(1))
}
}
impl<F, D: Records<Elem = F>, T> Records for DatasetBase<D, T> {
type Elem = F;
fn nsamples(&self) -> usize {
self.records.nsamples()
}
fn nfeatures(&self) -> usize {
self.records.nfeatures()
}
}
impl Records for () {
type Elem = ();
fn nsamples(&self) -> usize {
0
}
fn nfeatures(&self) -> usize {
0
}
}
impl<R: Records> Records for &R {
type Elem = R::Elem;
fn nsamples(&self) -> usize {
(*self).nsamples()
}
fn nfeatures(&self) -> usize {
(*self).nfeatures()
}
}