用于向包中添加次要功能的选项,需要新的依赖项

时间:2018-02-11 03:51:11

标签: rust dependency-management rust-cargo

我想在crate A中添加一个相对较小的功能,这需要依赖于第二个crate BA的维护者合理地反对为一个小的,虽然可能有用的功能引入一个全新的依赖。

处理此问题的最佳方法是什么?我能想到的选择是:

  1. 使用新功能创建一个新的包(同时依赖于AB
  2. 使用Cargo"功能"不知何故,所以用户必须选择额外的依赖。
  3. 1 似乎不是最理想的,因为它是一个与A非常相关的小功能,而且必须特别依赖第三个箱子似乎很烦人,但 2 似乎差不多......

    当并且只有当crate明确地依赖于AB时,是否有某种方法可以编译我的次要功能?

1 个答案:

答案 0 :(得分:3)

这是exactly the case optional features解决:

  

货物支持允许表达的功能:

     
      
  • 条件编译选项(可通过cfg属性使用);
  •   
  • 可选依赖项,可增强程序包,但不是必需的;和
  •   
  • 可选依赖项的集群,例如postgres,其中包含postgres包,postgres-macros包,以及   可能是其他包(如开发时模拟库,   调试工具等。)。
  •   

不幸的是,你似乎已经驳回了这个选项而没有任何解释为什么它“差不多”,所以......我想你唯一的选择是分叉箱子并应用你的改变。