pub trait Neuron<T, C>:
Debug
+ Send
+ Sync
+ 'static{
// Required methods
fn encode(&self, data: &T) -> Result<Vec<u8>, NeuronError>;
fn decode(&self, data: &[u8]) -> Result<T, NeuronError>;
fn name(&self) -> String;
fn name_without_codec(&self) -> String;
fn schema(&self) -> String;
fn clone_to_box(&self) -> Box<dyn Neuron<T, C> + Send + Sync + 'static>;
fn clone_to_arc(&self) -> Arc<dyn Neuron<T, C> + Send + Sync + 'static>;
}