Hi, calling all generics wizards, that might be able to understand rustcryptos generics magic?! I am trying to express a generics bound that allows me to express a signer that works for both ecdsa and rsa. I have this currently, and that works great for all ecdsa curves, but is it possible to somehow expand that to also allow RSA and possibly also eddsa? ```rust #[derive(Debug)] pub struct Signature where SignatureSize: core::ops::Add + ArrayLength, ecdsa::der::MaxSize: ArrayLength, { signature: ecdsa::der::Signature, } pub struct Signer<'a, T: PrimeCurve, RNG: CryptoRngCore> { pub secret_key: SecretKey, pub scheme: SignatureScheme, pub rng: &'a mut RNG, } impl<'a, T: PrimeCurve, RNG: CryptoRngCore> Signer<'a, T, RNG> where SignatureSize: core::ops::Add + ArrayLength, ecdsa::der::MaxSize: ArrayLength, { pub fn sign(&mut self, message: &[u8]) -> Signature where T: CurveArithmetic + DigestPrimitive, ::Scalar: SignPrimitive, { let signing_key = SigningKey::from(&self.secret_key); let signature = signing_key.sign_with_rng(self.rng, &message); Signature { signature } } pub fn signature_scheme(&self) -> SignatureScheme { self.scheme } } ```