【发布时间】:2015-12-16 05:32:05
【问题描述】:
我正在尝试实现一个宏以允许创建 MATLAB 式矩阵。我有一个基本的工作宏,但我还有很长的路要走。
我希望能够强制执行正确的结构(每行中的元素数量相同),但我不确定如何在宏中执行此操作。我想我想强制每个内部重复具有相同的长度 - 这是我可以做的吗?
到目前为止,这是我的代码:
pub struct Matrix<T> {
pub cols: usize,
pub rows: usize,
pub data: Vec<T>
}
macro_rules! mat {
( $($( $x:expr ),*);* ) => {
{
let mut vec = Vec::new();
let mut rows = 0;
$(
$(
vec.push($x);
)*
rows += 1;
)*
Matrix { cols : vec.len()/rows, rows: rows, data: vec}
}
};
}
It works 但正如您所见,它不是很安全。它对结构没有限制。
我想用这个宏做更多事情,但我认为这是一个好的开始!
更新:
这里是some playground code 我制定的一个糟糕的实现。如果有人有更好的建议,请告诉我!否则我会自己关闭它。
【问题讨论】: