Нет. Макросы работают на деревьях синтаксиса и не могут деконструировать существующую переменную, подобную этой.
Однако использование макроса table!
- не единственный способ создать prettytable::Table
. Если вы посмотрите на документ, вы заметите, что есть реализация :
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();
}