当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust vec用法及代码示例


本文简要介绍rust语言中 Macro std::vec 的用法。

用法

macro_rules! vec {
    () => { ... };
    ($elem : expr ; $n : expr) => { ... };
    ($($x : expr), + $(,) ?) => { ... };
}

创建一个包含参数的 Vec

vec! 允许使用与数组表达式相同的语法定义 Vec s。这个宏有两种形式:

  • 创建一个包含给定元素列表的 Vec
let v = vec![1, 2, 3];
assert_eq!(v[0], 1);
assert_eq!(v[1], 2);
assert_eq!(v[2], 3);
  • 从给定的元素和大小创建一个 Vec
let v = vec![1; 3];
assert_eq!(v, [1, 1, 1]);

请注意,与数组表达式不同,此语法支持实现 Clone 的所有元素,并且元素的数量不必是常数。

这将使用clone 来复制一个表达式,因此在使用具有非标准Clone 实现的类型时应该小心。例如,vec![Rc::new(1); 5] 将创建一个包含五个对相同装箱整数值的引用的向量,而不是五个指向独立装箱整数的引用。

另外,请注意 vec![expr; 0] 是允许的,它会生成一个空向量。但是,这仍将评估 expr ,并立即删除结果值,因此请注意副作用。

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Macro std::vec。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。