pub trait Calculator {
// Required methods
fn calculate_energy(
&self,
view: &StructureView<'_>,
) -> Result<f64, CalculatorError>;
fn calculate_forces(
&self,
view: &StructureView<'_>,
) -> Result<Vec<[f64; 3]>, CalculatorError>;
// Provided method
fn calculate(
&self,
view: &StructureView<'_>,
) -> Result<CalculatorResult, CalculatorError> { ... }
}