pub mod concretetensor;
pub mod graphtensor;
pub use concretetensor::Tensor;
pub use graphtensor::GraphTensor;
pub(crate) fn contiguous_strides(shape: &[usize]) -> Vec<usize> {
let mut strides = Vec::with_capacity(shape.len());
let mut acc = 1;
for dim in shape.iter().rev() {
strides.push(acc);
acc *= *dim;
}
strides.reverse();
strides
}