gpt4 book ai didi

module - 在项目的库根中声明的模块中使用 Rust 特性

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

我正在用 Rust 构建一个工具,它能够生成虚拟时间序列数据来测试我们现有的不同系统。我正在尝试实现一个名为“批处理”的特性,该特性在我的 lib.rs 中声明,该特性位于项目的根目录中。但是,在我的模块中,Rust 提示此特性不在范围内,我如何从我的模块中访问更高命名空间上的声明?

这是我的项目的样子:

 - main.rs
- lib.rs
- factory
- cassandra.rs
- jboss.rs
- mod.rs
- drain
- http.rs
- cqlsh.rs
- mod.rs

lib.rs 包含:

pub trait Batch<T> {
fn create(&self) -> Option<T>
}

在 cassandra.rs 和 jboss.rs 中,我有一些结构,我正在尝试为其实现 Batch。在 lib.rs 中,我使用以下方式声明了两个模块:

pub mod drains;
pub mod factory;

这是正确的方法还是我应该将 cassandra.rs 和 jboss.rs 合并到一个文件中并在那里声明特征?

最佳答案

默认情况下,来自其他模块的项目是不可见的,即使这个其他模块是当前模块的父模块。您必须显式使用它们。

对于这种情况,有两种方式可以方便的做到:

  • 使用 crate::Batch,如果你想在根中保留这个特性;
  • 使用 super::Batch,如果您希望能够将整个层次结构(带有 trait 及其实现)移动到其他地方。

关于module - 在项目的库根中声明的模块中使用 Rust 特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58578579/

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