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
相关产品推荐
相关产品推荐

