【发布时间】:2019-10-21 04:28:08
【问题描述】:
我正在学习 Rust 宏,但在使用 vec 时对语法感到困惑。 source code 实现vec!:
macro_rules! vec {
($elem:expr; $n:expr) => (
$crate::vec::from_elem($elem, $n)
);
($($x:expr),*) => (
<[_]>::into_vec(box [$($x),*])
);
($($x:expr,)*) => (vec![$($x),*])
}
让我们忘记使用它的标准方式:
let v0 = vec![1, 2, 3];
如果我们查看源代码,我们不应该像下面这样使用它吗?
let v1 = vec!(3; 1);
let v2 = vec!(1, 2, 3);
与v0相比,为什么我们在v1和v2中使用[]而不是()?
【问题讨论】:
-
很抱歉,感谢您告诉我这些。我现在就改一下。