learningOSRust 编译器开源社区
  • 训练营
  • 明星学员
  • 共建单位
  • 项目实习
  • 问答论坛
登录
    Copyright © 2024 opencamp.ai All rights reserved.
    如果一个 Package 下, 有两个二进制 crate, 一个子 mod 里 use super::*, 它怎么知道是在哪个 父 mod 下?
    刘宇浩2025/08/06 23:37:21提问2025/08/06 23:37:21更新
      Rust 基础
    1401

    我理解 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
        暂无数据