Я работал над тем, чтобы пересмотреть мой проект в Rust, чтобы попробовать его, и одна из вещей, которые я хотел бы сделать, - это система плагинов. Я еще не слишком разбирался в dylib, но сейчас я хотел бы получить правильную архитектуру, чтобы позднее добавить dylib не было слишком сложно.
Мой вопрос касается конфигурации плагинов, я хотел бы вызвать для каждого плагина функцию инициализации и позволить им возвращать объект, который затем передавался бы при каждом вызове их функций. Меня не волнует, что находится в этом объекте; это дело плагина.
Я пытался использовать Box<dyn>
, но, конечно, это не работает без черты. Означает ли это, что единственным способом было бы объявить пустую черту, например, PluginConfig
, и использовать с ней dyn? Тогда плагины могут просто реализовать эту черту и вернуть ее из своего init. Или я упускаю правильный способ сделать это полностью? Если я правильно понял книгу, то после этого плагин не сможет получить доступ к своим полям, поскольку они не определены в Черте и, следовательно, не будут работать должным образом.
tl; dr Я просто ищу ржавый эквивалент хранения void *
.