Qual é o Rust equivalente às funções virtuais do C ++?
Eu estou tentando implementar algo no Rust que funciona como uma função virtual C ++ em uma classe, eu teria uma estrutura de base com dados e manteria algumas funções indefinidas, como no exemplo a seguir:
class A {
int stuff;
public:
virtual void foo(int a, int b) = 0;
void function_that_calls_foo() { /*...*/ foo(1, 2); /*...*/ }
}
class B: public A { void foo(int a, int b) { /* ... */ } }
Eu estava tentando implementá-lo usando ponteiros de função, mas sem muito sucesso. Eu poderia usar uma característica com as funções de A e implementar A na outra classe, mas perderia os dados da estrutura. Qual é a melhor (mais rápida?) Maneira de implementar esse tipo de coisa no Rust?
struct A {
...
}
impl A {
fn function_that_calls_foo(&self) {
...
self.foo(a, b);
...
}
}
struct B {
a: A;
}
impl B {
fn xxx(&self) {
a.function_that_calls_foo(1, 2);
}
fn foo(&self, a: i32, b: i32) {...}
}