I recently had a discussion about variable generic parameters in impl<...>
blocks over in the users forum.
I was looking for a way to make the following code work
// This syntax is totally fine and working right now
struct Container<T, #[cfg(feature = "some_feature")] S> {
element: T,
#[cfg(feature = "some_feature")]
second_element: S,
}
// THIS is the part which is not working
impl<T, #[cfg(feature = "some_feature")] S> Container<T, #[cfg(feature = "some_feature")] S> {
fn get_element(&self) -> T {
self.element
}
#[cfg(feature = "some_feature")]
fn get_second_element(&self) -> S {
self.second_element
}
}
While some workarounds were proposed, I could not find a satisfying approach without drawbacks. In my opinion, the language should support statements such as impl<#[cfg(feature = "some_feature")] T>
since they are already supported when specifying structs (see code above).
I would love to hear some feedback. Unfortunately I have never had the time to get to know how the compiler works. Thus I would love to hear some feedback before I try to come up with an idea for a possible implementation.