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

如何在Rust的src/bin二进制文件中使用库的私有函数?

在同一Rust Package中让二进制文件调用库私有函数

要实现仅让src/bin/run-foo.rs调用src/lib.rs中的私有函数run_foo,无需将函数对外暴露,可通过以下两种方式实现:

方案一:直接通过#[path]引用lib.rs作为模块

在二进制文件中使用#[path]属性将lib.rs导入为本地模块,这样就能访问其中的私有函数:

// foo_core/src/bin/run-foo.rs
#[path = "../lib.rs"]
mod foo_core;

fn main() {
    foo_core::run_foo();
}
// foo_core/src/lib.rs
fn run_foo() {
    // 函数逻辑
}

这种方式下,run_foo保持私有状态,不会被库的外部使用者访问到,只有当前二进制文件能通过导入的模块调用它。

方案二:将函数放在私有子模块中

如果lib.rs代码较多,可将run_foo放在私有子模块里,配合pub(super)确保父模块(lib.rs根)能访问,再通过#[path]导入模块调用:

// foo_core/src/lib.rs
mod internal {
    // pub(super) 允许父模块访问,无需对外暴露
    pub(super) fn run_foo() {
        // 函数逻辑
    }
}

// 其他库对外代码...
// foo_core/src/bin/run-foo.rs
#[path = "../lib.rs"]
mod foo_core;

fn main() {
    foo_core::internal::run_foo();
}

这两种方案都能满足你的需求:既不用将run_foo设为公共接口,又能在指定的二进制文件中调用该函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 21:18:22