gpt4 book ai didi

rust - 如何克隆函数指针

转载 作者:行者123 更新时间:2023-11-29 07:46:13 25 4
gpt4 key购买 nike

我有一个结构,它有一个函数指针字段。我想为该结构实现 Clone 特性,但我不能,因为函数指针如果至少有一个参数则无法被克隆:

fn my_fn(s: &str) {
println!("in my_fn {}", s);
}

type TypeFn = fn(s: &str);

#[derive(Clone)]
struct MyStruct {
field: TypeFn
}

fn main() {
let my_var = MyStruct{field: my_fn};
let _ = my_var.clone();
}

Link to playground .

最佳答案

由于 issue #24000,在其类型中带有引用的函数指针未实现 Clone .这意味着您不能 #[derive(Clone)] 包含它们的类型;您必须手动实现它。

但是函数指针Copy,所以你可以impl Copy你的类型,然后用它来手动impl Clone:

impl Copy for MyStruct {}

impl Clone for MyStruct {
fn clone(&self) -> Self { *self }
}

Playpen link .

关于rust - 如何克隆函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33454425/

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