如何在 Rust 中创建泛型函数向量

问题描述 投票:0回答:1
fn render_task_enter_field<W>(stdout: &mut W)
where
    W: Write,
{
    ...
}

我需要将此函数添加到向量中。我将迭代它并调用每个函数。

我已经尝试过

Vec<fn(&mut impl Write)>
,但不起作用

rust rust-cargo
1个回答
0
投票

你想要这个:

Vec<Box<dyn Fn(&dyn Write)->()>>

包含动态类型函数的框向量,该函数采用实现写入的动态对象。

您无法将泛型函数添加到数组中,因为它实际上只是一大堆单独的函数,但您可以让它采用特征对象作为参数来获得相同的效果。

完整示例:

use std::io::Write;

fn render_task_enter_field(stdout: &dyn Write)
{
}


fn main() {
    let mut k:Vec<Box<dyn Fn(&dyn Write)->()>> = vec![];

    k.push(Box::new(render_task_enter_field));
}
© www.soinside.com 2019 - 2024. All rights reserved.