gpt4 book ai didi

rust - 如何正确引用相同的代码作为依赖项的依赖项?

转载 作者:行者123 更新时间:2023-11-29 08:03:36 28 4
gpt4 key购买 nike

我有一个使用 Amethyst game engine 的玩具项目.我正在尝试编写自己的 System用于收集用户输入,类似于 FlyMovementSystemArcBallRotationSystem他们实现了here .

看来收集鼠标移动的正确方法是通过 EventChannel<Event> , 其中Event来自 winit crate,Amethyst 依赖它,但不会重新导出。

引用相同 winit::Event 的“正确”方法是什么?那紫 Crystal 呢?

  • 我应该添加 winit 吗?到我的Cargo.toml文件?如果是这样,指定版本的推荐方法是什么? (我可以使用一些关键字来代替特定的版本号,以允许我“继承”Amethyst 的依赖项吗?)
  • 实际上不鼓励引用子依赖项吗?如果是这样,我应该怎么做?

最佳答案

这个问题目前还没有很好的解决方案。最好的解决方法是添加对相同版本传递依赖的直接依赖:

[dependencies]
foo = "0.1"
bar = "0.2" # `foo` depends on bar 0.2 and we need to keep these in sync

您可以使用 cargo tree 之类的工具手动识别foo 所需的版本并使您的 Cargo.toml 保持最新。我强烈建议添加一条评论,说明您选择特定版本的原因。

如果 crate 在不同时使用底层依赖项的情况下很难使用,我也鼓励您向父 crate 提交问题,请求他们重新导出所需的内容。 Tokio crate 就是一个很好的例子,它 re-exports large chunks of the futures crate .


与你的想法类似,I proposed有办法使用相同的版本作为依赖项。相反,Cargo 团队选择添加 public and private dependencies 的区别。 .虽然从工程角度来看这将是一个更好的解决方案,但在实现方面进展甚微。

另见:

关于rust - 如何正确引用相同的代码作为依赖项的依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54754402/

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