gpt4 book ai didi

generics - 如何专门化函数的返回值?

转载 作者:行者123 更新时间:2023-11-29 08:22:44 25 4
gpt4 key购买 nike

<分区>

以下 block 是库代码;我无法编辑它:

struct Container<F> {
f: F,
}

fn wrapped<F, T>(f: F) -> Container<F>
where
F: FnMut() -> T,
{
Container { f }
}

我想要一个专门针对 T 的包装函数:

fn return_10() -> u32 {
10
}

fn wrapper<F>() -> Container<F>
where
F: FnMut() -> u32,
{
wrapped(return_10)
}

fn main() {
wrapper();
}

(为了简单起见,我在上面的代码中使用了u32,但实际上我想使用一个特征。我希望这无关紧要。)

它不起作用:

error[E0308]: mismatched types
--> src/main.rs:20:13
|
20 | wrapped(return_10)
| ^^^^^^^^^ expected type parameter, found fn item
|
= note: expected type `F`
found type `fn() -> u32 {return_10}`

为什么 Rust 不能推断出 T = u32?我不应该这样做吗?

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