I have:
struct Plumbus<'a> {
grumbo: &'a Grumbo,
}
trait Grumbo {
fn dinglebop<T>(&self, x: &mut T) -> bool { false }
}
but I get:
error[E0038]: the trait `Grumbo` cannot be made into an object
--> plumbus.rs:4:5
|
4 | grumbo: &'a Grumbo,
| ^^^^^^^^^^^^^^^^^^ the trait `Grumbo` cannot be made into an object
|
= note: method `dinglebop` has generic type parameters
I want to have dinglebop
do nothing by default, but depending on the Grumbo
and the T
, possibly fill x
with a T
if it makes sense for that particular Grumbo
implementation.
In C++ this could probably be accomplished with partial specialization. I am not sure what to aim for with Rust.
- Is it possible to have generic functions like this on a trait?
- How do I accomplish my goal of having a
dinglebop()
for arbitraryT
without specializing myPlumbus
for a particularT
?