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

Rust中main函数调用impl方法出现E0424错误该如何修复?

Rust E0424 报错修复方案

错误根因

self是Rust impl块内方法的专属关键字,仅用于指代当前方法所属的结构体实例,main函数不属于任何结构体的实现块,不存在self变量,直接传递self给方法必然触发E0424报错。
另外你定义的bank_new_user是实例方法(签名带self参数),必须先创建NewUser结构体的实例才能调用,不能直接用NewUser::bank_new_user这种关联函数的方式调用。

修复步骤

1. 新增NewUser实例构造函数

在NewUser的impl块中添加构造方法,用于创建初始化的实例:

impl NewUser {
    // 关联函数,用于生成初始的NewUser实例
    pub fn new() -> Self {
        NewUser {
            age: String::new(),
            new_user: String::new(),
            account: String::new(),
            account_number: 0,
            routing_number: 0,
            select: String::new(),
        }
    }
}

2. 修改main函数中的调用逻辑

把报错的匹配分支替换为以下代码,先实例化再调用方法:

"1" => NewUser::new().bank_new_user(),

可选优化:调整方法签名保留实例所有权

你当前的bank_new_user签名是fn bank_new_user(self),调用后会直接拿走实例的所有权,实例用完就会被销毁。如果你后续还需要使用创建好的用户实例,可以把方法签名改为fn bank_new_user(&mut self),调用写法调整为:

"1" => {
    let mut new_user = NewUser::new();
    new_user.bank_new_user();
    // 此处后续还可以继续操作new_user实例
}

其他代码优化提示

  • 所有read_line调用建议添加.expect("输入读取失败")处理返回的Result,避免运行时出错没有明确提示
  • yes方法中的NewUser::user_info(&mut self);可以简化为self.user_info();,NewUser::acc_no(&mut self);可以简化为self.acc_no();,写法更符合Rust习惯

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:54:04