gpt4 book ai didi

rust - 如何使启用的两个功能导致 Rust 中的冲突?

转载 作者:行者123 更新时间:2023-11-29 07:54:22 25 4
gpt4 key购买 nike

我有两个特征:feature_1feature_2:

[features]
default = ["feature_1"]
feature_1 = []
feature_2 = []

我想让用户一次只选择其中一个,因为同时选择两者会导致一些重要代码的重复以及其他一些原因。我该怎么做?

最佳答案

从根本上说,你不能。 Cargo 特性是附加的,特性可以由依赖树中的任何 crate 启用。 Cargo 有一个隐含的假设,即启用附加功能始终有效。

此外,功能不仅仅是请求,它们是需求。如果一个 crate 需要 feature_1,而另一个 crate 需要 feature_2,那么这两个 crate 不可能一起工作。 Cargo(和 Rust 本身)竭尽全力尝试让这种情况难以产生。

最好的解决方案是更改您的 crate 的编写方式,以便可以同时启用这两个功能。如果那真的不可能,那么您能做的最好的事情就是阻止编译成功。这可以通过为您的 crate 构建脚本来检测不兼容的功能并失败,或者通过将非编译代码放入您的 crate 中来完成,该代码仅在启用不兼容的功能时才启用。

关于rust - 如何使启用的两个功能导致 Rust 中的冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44561643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com