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

Rust实现结构体Default trait调用Default::default()报EXC_BAD_ACCESS错误

问题根因

栈溢出由Default trait实现的无限递归导致:
你在Configuration的default()方法中使用结构体更新语法..Default::default()时,Rust编译器会根据当前正在构造的结构体类型,自动推断Default::default()的调用目标为<Configuration as Default>::default(),也就是你正在实现的这个方法本身。递归没有任何终止条件,会持续消耗栈空间直到溢出,最终触发EXC_BAD_ACCESS错误。

修复方案

你需要手动为剩余字段指定默认值,避免调用自身的default()方法:

impl Default for Configuration {
  fn default() -> Self {
    Configuration {
      user: String::default(),
      password: Option::default(),
      dbname: Option::default(),
      hostaddr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 5432),
      authentication_type: AuthenticationType::Trust,
    }
  }
}

上述代码中直接使用字段对应类型的默认实现:String默认是空字符串,Option<T>默认是None,完全符合常规使用场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:45:01