pub trait Func<IN, OUT>where
IN: WithTensors,
OUT: WithTensors,{
type Tangent: ToTensorGrads + FromTensorGrads;
type Cotangent: ToTensorGrads + FromTensorGrads;
// Required methods
fn call(&self, input: IN) -> OUT;
fn extract_input_tensors(&self, input: &IN, tensors: &mut Vec<Tensor>);
// Provided method
fn self_captured_tensors(&self, _tensors: &mut Vec<Tensor>) { ... }
}