use std::{any::Any, fmt::Debug};
use dyn_clone::{clone_trait_object, DynClone};
#[derive(Debug, Clone)]
pub struct Tensor {
pub data: Box<dyn Data>,
}
impl Tensor {
pub fn new<T: Data>(data: T) -> Self {
Self {
data: Box::new(data),
}
}
}
pub trait Data: Any + Debug + DynClone {
fn as_any(&self) -> &dyn Any;
fn as_any_mut(&mut self) -> &mut dyn Any;
}
clone_trait_object!(Data);
impl Data for Vec<f32> {
fn as_any(&self) -> &dyn Any {
self
}
fn as_any_mut(&mut self) -> &mut dyn Any {
self
}
}