You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rust项目中让模块私有且可被同项目其他模块调用?

Rust项目内模块可见性配置方案

你遇到的问题根源在于:默认项目结构里,main.rs是独立的二进制 crate,lib.rs是库 crate,二者属于不同的编译单元。pub(crate)的可见性只限定在定义它的库 crate 内部,所以二进制 crate 无法访问这个模块。

以下是最符合需求的解决方案:

将二进制入口并入库 crate(推荐)

这种方法能让main.rs和lib.rs共享同一个 crate 上下文,既满足项目内可访问,又不会对外暴露模块:

  1. 在项目的src目录下创建bin子文件夹:mkdir src/bin
  2. 把原src/main.rs移动到src/bin目录中:mv src/main.rs src/bin/main.rs
  3. 保持lib.rs中的模块定义不变:pub(crate) mod args;
  4. 在src/bin/main.rs里,通过crate::args::Cli;引用模块即可

这样配置后,当其他项目把你的库作为依赖时,args模块会因为pub(crate)的可见性限制而无法被访问,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Finlay Weber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:17:13