如果一个 Package 下, 有两个二进制 crate, 一个子 mod 里 use super::*, 它怎么知道是在哪个 父 mod 下?
刘宇浩2025/08/06 23:37:21提问2025/08/06 23:37:21更新
    Rust 基础
137

我理解 Package 下可以有 多个 Crate 树, 每一个 mod 最多只能属于一个 crate, 且只能被声明一次. 如果一个 mod 想共享给多个 二进制 crate, 就只能放到 lib 的 crate 下(所以 lib.rs 只能有一个)

按我的理解, 每个 mod 在 Package 中都会有一个 唯一 的路径, 子 mod 的 父 mod 是确定的.

想问一下我这个理解是否正确?


在此之上, 我还有几个问题不太理解:

  1. 如果一个 mod 没有被声明, 可以 use super 吗? 或者说能不能使用绝对路径使用 mod ?
  2. 子 mod 有必要 use super::* 吗? 一般都是 父 mod 调用子 mod 吧.
  3. 如果一个项目两个二进制 crate, 一个公共的函数文件, 这三个文件可以放在同一个目录下吗? 一般其他语言都是把关联紧密的代码放在同一目录下吧

简单来说, 我这里想问的是 rust 是怎样设计的包管理? 相较于其他语言(go)的包管理除了更复杂有什么优势?

回答(2
    推荐问答
      Simple Empty
      暂无数据