use num::complex::ComplexFloat; use option_trait::Maybe; use crate::{ quantities::{ListOrSingle, MaybeList, MaybeLists, MaybeOwnedList}, systems::{Ar, Rpk, Sos, Ss, SsAMatrix, SsBMatrix, SsCMatrix, SsDMatrix, Tf, Zpk}, MaybeRtfOrSystem }; pub trait MaybeSystem: MaybeRtfOrSystem where D: ComplexFloat { } impl MaybeSystem for () where D: ComplexFloat { } impl MaybeSystem for Tf where T: ComplexFloat, B: MaybeLists, A: MaybeList { } impl MaybeSystem for Zpk where T: ComplexFloat, K: ComplexFloat, Z: MaybeList, P: MaybeList { } impl MaybeSystem for Ss where T: ComplexFloat, A: SsAMatrix, B: SsBMatrix, C: SsCMatrix, D: SsDMatrix { } impl MaybeSystem for Sos where T: ComplexFloat, B: Maybe<[T; 3]> + MaybeOwnedList, A: Maybe<[T; 3]> + MaybeOwnedList, S: MaybeList> { } impl MaybeSystem for Rpk where T: ComplexFloat, R: ComplexFloat, P: ComplexFloat, RP: MaybeList<(R, P)>, K: MaybeList { } impl MaybeSystem for Ar where T: ComplexFloat, A: MaybeList, AV: ListOrSingle<(A, T::Real)> { }