The Polynomial struct needs to have polynomial traits implemented. This will allow it to be used in functions that have the generic <P> parameter like bisection for example:
pub fn bisection<P>(
polynomial: &P,
bounds: Bounds,
error_tol: f64,
itermax: usize,
mode: SolveMode,
) -> Result<f64, SolverError>
where
P: PolynomialTraits,