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

尝试用new()函数从其他文件初始化struct时出现编译错误

错误原因及解决方法:无法在模块Alpha中找到new函数

核心错误原因

你的代码存在两个关键问题:

  1. 模块名大小写不匹配:Rust的模块声明与文件名严格区分大小写,你的文件名为alpha.rs,但你在main.rs中写了mod Alpha;,这会导致Rust无法正确定位对应的模块文件。
  2. 路径访问错误:new方法是定义在alpha模块内的Alpha结构体实现中,而非直接属于alpha模块本身,因此不能直接通过Alpha::new()(或修正后的alpha::new())调用。

修正后的代码示例

alpha.rs代码保持不变

pub struct Alpha {
    age: i32
}

impl Alpha {
    pub fn new() -> Self {
        Alpha { age: 0 }
    }
}

修正main.rs(两种可选方式)

方式1:使用完整路径调用

// 模块名与文件名一致,使用小写alpha
mod alpha;

fn main() {
    // 通过「模块名::结构体名::方法名」的完整路径调用
    let alpha = alpha::Alpha::new();
}

方式2:通过use导入结构体简化调用

mod alpha;
// 导入模块内的Alpha结构体,后续可直接使用
use alpha::Alpha;

fn main() {
    let alpha = Alpha::new();
}

验证效果

修正后重新编译代码,E0425错误会消失,程序可正常初始化Alpha实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:07:39