Фон
У меня есть черта MyTrait
:
trait MyTrait {
fn name() -> String;
fn foo();
}
name
определяет его имя, а foo
- его связанная функция , которая делает некоторую работу для меня.
Target
У меня есть много структур, которые реализуют эту черту, и я хочу определить функцию
fn do_work(name: &String);
, которая находит структуру TheStruct
где TheStruct::name()
равно name
, и позвоните TheStruct::foo()
.
Задача
Чтобы достичь своей цели, мне нужно HashMap
или использовать match
, но целевое значение должна быть структура (не экземпляр) реализует MyTrait
, но это кажется невозможным.
Обходной путь
Измените name()
и foo()
на методы структуры, то есть name(&self)
и foo(&self)
, затем используйте HashMap
или просто match
, чтобы сделать все правильно. Но я думаю, что name()
и foo()
не нуждаются в особом экземпляре, зачем мне его создавать?