gpt4 book ai didi

rust - 这个函数可以用 Rust 创建吗?

转载 作者:行者123 更新时间:2023-12-03 11:25:58 24 4
gpt4 key购买 nike

fn foo(f: fn(u32) -> u32) -> fn(u32, u32) -> u32 {
unimplemented!()
}

以函数指针作为参数并返回调用原始函数的函数指针的函数,忽略额外的参数。

概念上类似于以下内容,忽略它不编译:

fn foo(f: fn(u32) -> u32) -> fn(u32, u32) -> u32 {
|x, _| f(x)
}

最佳答案

不幸的是,这是不可能的。函数没有状态,因此每次调用 foo 时,都必须生成一个在内部调用 f 的全新函数,这显然是不可能的。

如果你愿意放宽返回类型,你可以返回一个impl Fn(u32, u32) -> u32:

fn foo(f: fn(u32) -> u32) -> impl Fn(u32, u32) -> u32 {
move |x, _| f(x)
}

fn main() {
let new_f = foo(|x| x);
assert_eq!(new_f(1, 2), 1);
}

关于rust - 这个函数可以用 Rust 创建吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63752242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com