boreholeio 0.1.0

A library for interacting with borehole.io, a subsurface data management, delivery and visualisation platform
Documentation
use super::MeasurementArray;
use crate::{
    schema::{axes::ChannelAxis, Label},
    strided_array_file::ArrayProxy,
};

/// An object that holds a view of a measurement array owned by someone else.
#[derive(Debug)]
pub(crate) struct MeasurementArrayView<'a> {
    /// Data axes.
    axes: Vec<ChannelAxis>,
    /// Optional label object defining the implicit measurement axis, if one
    /// exists. Is not `None` for e.g. grayscale images.
    label: Option<Label>,
    /// Data view whose elements type is incapsulated into `ArrayProxy`.
    data: ArrayProxy<'a>,
}

impl<'a> MeasurementArrayView<'a> {
    pub(crate) fn new(axes: Vec<ChannelAxis>, label: Option<Label>, data: ArrayProxy<'a>) -> Self {
        Self { axes, label, data }
    }
}

impl<'a> MeasurementArray<'a> for MeasurementArrayView<'a> {
    fn data(&self) -> ArrayProxy<'a> {
        self.data.clone()
    }

    fn axes(&self) -> &Vec<ChannelAxis> {
        &self.axes
    }

    fn label(&self) -> &Option<Label> {
        &self.label
    }
}