gpt4 book ai didi

vector - 是否可以将集合扩展为函数的多个参数

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

我有一个 Vec,它有以下元素:

let v = vec!(["ABC", "DEFG", "HIJKLMN"],
["foobar", "bar", "foo"],
["foobar2", "bar2", "foo2"])

我正在使用库 prettytable-rs 中的宏 table!,它接受如下参数:

let table = table!(["ABC", "DEFG", "HIJKLMN"],
["foobar", "bar", "foo"],
["foobar2", "bar2", "foo2"]);

table.printstd();

基本上我想分解 Vec v 并将其元素作为多个参数传递给宏 table! 或任何函数/方法事情。有可能吗?

最佳答案

没有。宏在语法树上工作,不能像这样解构现有变量。

但是,使用 table! 宏并不是构造 prettytable::Table 的唯一方法。如果您查看文档,您会注意到有 an implementation of :

impl<T, A, B> From<T> for Table where
B: ToString,
A: IntoIterator<Item = B>,
T: IntoIterator<Item = A>,

这意味着您可以从任何可双重迭代的对象构造一个表,生成实现 ToString 的内容。

这允许像这样构建表:

#[macro_use]
extern crate prettytable;
use prettytable::Table;

fn main() {
let v = vec![
["ABC", "DEFG", "HIJKLMN"],
["foobar", "bar", "foo"],
["foobar2", "bar2", "foo2"],
];

let table = prettytable::Table::from(v.iter());

// Print the table to stdout
table.printstd();
}

关于vector - 是否可以将集合扩展为函数的多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52132914/

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