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

Vector 是否可以将集合扩展为函数的多个参数,vector,parameters,rust,Vector,Parameters,Rust,我有一个Vec,它有以下元素: let v = vec!(["ABC", "DEFG", "HIJKLMN"], ["foobar", "bar", "foo"], ["foobar2", "bar2", "foo2"]) 我正在使用一个宏表来自库prettytable rs,它接受以下参数: let table = table!(["ABC", "DEFG", "HIJKLMN"], ["foobar"

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

let v = vec!(["ABC", "DEFG", "HIJKLMN"],
             ["foobar", "bar", "foo"],
             ["foobar2", "bar2", "foo2"])
我正在使用一个宏
来自库
prettytable rs
,它接受以下参数:

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

table.printstd();

基本上,我想分解
Vec
v
并将其元素作为多个参数传递给宏
或与此相关的任何函数/方法。是否可以这样做?

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

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


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

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

impl<T, A, B> From<T> for Table where
    B: ToString,
    A: IntoIterator<Item = B>,
    T: IntoIterator<Item = A>, 
#[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();
}