Generic struct or specialised struct implementing trait?

I'm working on my first Rust project, which will include a library.
In this library, I'm currently defining traits (eg AsfaloadSecretKey), and the goal is to have multiple structs (eg MinisignSecretKey) implement these traits (eg impl AsfaloadSecretKey for MinisignSecretKey).

I'm wondering if I should replace

struct MinisignSecretKey {
    key: minisign::SecretKey,
}

by

// Define generic struct at same level as trait
struct AsfaloadSecretKey<K> {
    key: K,
}
// Implement the trait for the specialised struct
impl AsfaloadSecretKey for AsfaloadSecretKey<minisign::SecretKey> {
//...
}

What are the up/downsides of my each approach? Does my current approach have limitations?
Could anyone share their experience?

Thanks in advance!

In the end I made the change in this commit.
Seems a positive change as code will now only manipulate the generic structs, and not structs specific to the implementation.

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.