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

Rust:能否为trait方法的闭包类型参数指定参数名?

可以修改,且完全合法

你完全可以为trait Player中闭包参数添加名称,这种写法在Rust里是合法的,具体说明如下:

  • 为dyn Fn(包括FnMut、FnOnce)的参数指定名称属于语法糖,仅作为文档说明使用,不会改变函数类型的本质。原代码和修改后的代码在类型匹配、功能逻辑上完全等价。
  • 这种写法能显著提升代码可读性,让其他开发者一眼就能明白闭包参数的含义(比如team_name对应队伍名称、age对应年龄),尤其适合参数类型不够直观的场景。

举个简单的例子,只要闭包的参数类型是&str和i64、返回值是Result<Player>,不管你定义闭包时用什么参数名,都能符合这个trait的要求:

// 符合要求的闭包示例
let create_player = |tn: &str, a: i64| -> Result<Player> {
    // 实现逻辑
    Ok(Player { team_name: tn.to_string(), age: a })
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:05:31