macro_rules! vec { () => { ... }; ($elem:expr; $n:expr) => { ... }; ($($x:expr),+ $(,)?) => { ... }; }
Expand description
创建一个包含参数的 Vec
。
vec!
允许使用与数组表达式相同的语法定义 Vec。
该宏有两种形式:
- 创建一个包含给定元素列表的
Vec
:
let v = vec![1, 2, 3];
assert_eq!(v[0], 1);
assert_eq!(v[1], 2);
assert_eq!(v[2], 3);
Run- 根据给定的元素和大小创建
Vec
:
let v = vec![1; 3];
assert_eq!(v, [1, 1, 1]);
Run请注意,与数组表达式不同,此语法支持所有实现 Clone
的元素,并且元素的数量不必是常量。
这将使用 clone
复制表达式,因此在具有非标准 Clone
实现的类型上使用此表达式时应格外小心。
例如,vec![Rc::new(1); 5]
将对相同的 boxed 整数值创建五个引用的 vector,而不是对 boxed 整数独立引用的五个引用。
另外,请注意,允许使用 vec![expr; 0]
,并产生一个空的 vector。
然而,这仍然会计算 expr
,并立即丢弃结果值,因此请注意副作用。