Каков наилучший способ реализации необязательных библиотечных зависимостей в Rust?
Я пишу игрушечную библиотеку программного обеспечения в Rust, которая должна иметь возможность загружать изображения практически любого типа во внутреннюю структуру данных для изображения. Это ранние времена для экосистемы Rust, и нет ни одной библиотеки / набора привязок, которым бы я мог доверять для этой задачи.
Я хотел бы в идеале:
- Поддержка нескольких избыточных внешних библиотек, которые могут или не могут быть доступны во время выполнения
- Поддержка нескольких избыточных внешних библиотек, которые могут или не могут быть доступны во время компиляции.
- Включите по крайней мере одну запасную реализацию, которая поставляется с моим кодом.
- Полностью инкапсулируйте все содержимое загрузки файлов за функцией, которая выполняет путь -> загрузка InternalImage.
Есть ли лучший способ реализовать необязательные зависимости, подобные этой, в Rust? Некоторые из библиотек будут Rust, а некоторые, вероятно, будут C-библиотеками с привязками Rust.
1 ответ
Cargo, менеджер пакетов Rust, может помочь с этим. Это позволяет вам объявлять необязательные зависимости времени компиляции. Смотрите раздел [features] документации Cargo.
В зависимости от времени выполнения я не уверен. Я думаю, что std::dynamic_lib может быть полезным. Смотрите пример использованияDynamicLibrary
в предыдущем вопросе ТАК.