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

Rust函数存在但无法访问问题:如何在route_func.rs中调用simple_func.rs内的函数

Rust函数存在但无法访问问题:如何在route_func.rs中调用simple_func.rs内的函数

嘿,这个问题我之前也碰到过,本质就是Rust的模块可见性规则在搞事情——Rust默认所有模块和函数都是私有的,所以咱们得一步步搭建好模块树,同时开放正确的可见性权限。先给你理清楚操作步骤:

第一步:完善blockchain模块的结构

首先你的blockchain文件夹缺少一个mod.rs文件,这个文件是Rust识别文件夹作为模块的关键。创建blockchain/mod.rs并写入:

// blockchain/mod.rs
pub mod simple_func;

这行代码的作用是把simple_func.rs声明为blockchain模块下的公开子模块,这样外部模块才能找到它。

第二步:把simple_func里的函数设为公开

Rust的函数默认是私有,哪怕模块公开了,函数还是不能被外部调用。所以修改blockchain/simple_func.rs,给需要调用的函数加上pub修饰:

// blockchain/simple_func.rs
// 给要对外暴露的函数加上pub
pub fn my_simple_function() {
    // 你的函数逻辑
    println!("这是来自simple_func的函数");
}

第三步:在crate根声明公开模块

打开src/main.rs,需要把blockchain和routes都声明为公开模块,这样两个子模块之间才能互相访问:

// src/main.rs
pub mod blockchain; // 公开blockchain模块,让其他模块能访问它的内容
pub mod routes;     // 公开routes模块

fn main() {
    // 可以在这里测试调用,验证是否生效
    routes::route_func::use_simple_func();
}

第四步:完善routes模块的结构

同样,routes文件夹的mod.rs需要把route_func.rs声明为公开子模块,修改routes/mod.rs:

// routes/mod.rs
pub mod route_func;

第五步:在route_func.rs中导入并调用函数

现在就可以在routes/route_func.rs里通过crate的根路径访问simple_func的函数了:

// routes/route_func.rs
// 从crate根导入目标函数
use crate::blockchain::simple_func::my_simple_function;

pub fn use_simple_func() {
    // 直接调用导入的函数
    my_simple_function();
    // 或者也可以用完整路径调用,不需要导入:
    // crate::blockchain::simple_func::my_simple_function();
}

为什么这样能解决问题?

Rust的模块系统是基于"crate根"的树形结构,只有通过pub关键字开放的模块和成员,才能被树形结构中其他模块访问。咱们做的每一步都是在:

  1. 把文件夹注册成模块(通过mod.rs)
  2. 开放模块的可见性(pub mod)
  3. 开放函数的可见性(pub fn)
  4. 通过crate根路径找到目标函数

这样整套模块树就打通了,你再编译应该就不会出现"函数存在但无法访问"的错误啦。

备注:内容来源于stack exchange,提问作者Russo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 14:18:16