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

如何定义带返回值的函数指针?Rust回调函数报错解决

修复Rust回调函数类型不匹配问题

你的代码编译失败的核心原因是函数指针类型不匹配:use_callback中定义的参数callback: fn()要求传入的函数返回空单元类型(),但你实际传入的callback函数返回的是i32,两者签名不兼容。

以下是两种可行的修复方案:

方案1:指定函数指针的返回类型

直接在函数指针类型里明确返回值为i32,和传入的函数签名保持一致:

fn use_callback(callback: fn() -> i32) -> i32 {
    callback()
}

fn callback() -> i32 {
    2
}

fn main() {
    println!("Result: {:?}", use_callback(callback));
}

方案2:用泛型支持任意可调用类型

如果需要更灵活的回调(比如支持闭包),可以结合Fn trait和泛型实现:

fn use_callback<F: Fn() -> i32>(callback: F) -> i32 {
    callback()
}

fn callback() -> i32 {
    2
}

fn main() {
    println!("Result: {:?}", use_callback(callback));
    // 也可以直接传入闭包
    println!("Result: {:?}", use_callback(|| 3));
}

运行任意一种方案,都能得到你预期的输出:Result: 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:07:36