在Rust中实现可选库依赖项的最佳方法是什么?

时间:2014-11-15 12:33:17

标签: plugins rust external-dependencies

我正在Rust中编写一个玩具软件库,它需要能够将几乎任何类型的图像加载到图像的内部数据结构中。现在是Rust生态系统的早期阶段,并且没有任何一个库/一组绑定可以信任这项任务。

我理想地喜欢:

  • 支持多个可在运行时使用或不可用的冗余外部库
  • 支持在编译时可能可用或不可用的多个冗余外部库。
  • 包含我的代码附带的至少一个后备实现。
  • 完全封装执行路径的函数后面的所有文件加载内容 - > InternalImage loading。

在Rust中实现像这样的可选依赖项是否有最佳实践方法?一些库将是Rust,其中一些可能是带有Rust绑定的C库。

1 个答案:

答案 0 :(得分:2)

Rust包管理员Cargo可以提供帮助。它允许您声明可选的编译时依赖项。请参阅[features] section of Cargo's documentation

对于运行时依赖项,我不确定。我认为std::dynamic_lib可能会有所帮助。在先前的SO问题中查看example of using DynamicLibrary