gpt4 book ai didi

generics - 如何在泛型函数中请求和使用结构(没有结构实例!)?

转载 作者:行者123 更新时间:2023-12-03 11:41:32 26 4
gpt4 key购买 nike

我有以下代码:

fn func<T, U>(f: T) where T: Fn()-> U, U: MyTrait {
let state = f();
// ...
}
这里的 f只是来自某些结构的 newMyTrait函数。我想要一个函数,该函数可与实现 MyTrait的每个结构一起使用,并且我想为 new调用该特征的 state方法。
如何将结构(不是具有该结构类型的值)传递给对该结构实现了特定特征限制的函数?

最佳答案

您不需要传递任何参数。您所需要的只是类型参数U

fn func<U>(...)
where
U: MyTrait
{
...
let state = U::new();
...
}
还是您是说只想要 Fn() -> U的通用实现?这甚至更容易: U::new已经足够了。使用 Default作为特征的示例,但是您可以以相同的方式使用任何特征:
use std::fmt::Debug;

fn print_instance<T: Debug, F: Fn() -> T>(f: F) {
println!("{:?}", f());
}

fn print_default<T: Debug + Default>() {
print_instance::<T, _>(Default::default);
}

fn main() {
print_default::<Vec<i32>>();
print_default::<f32>();
}

关于generics - 如何在泛型函数中请求和使用结构(没有结构实例!)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64944727/

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