因此,为了方便地初始化向量,这里有vec!宏。
let mut vec_of_zeroes: Vec<usize> = vec![0;10];
我想知道是否有一个简单的标准宏来初始化链表?
use std::collections::LinkedList;
let mut list_of_zeroes: LinkedList<usize> = /*macro here?*/;
如果没有,不用担心。谢谢你的宝贵时间。
不,标准库中没有这样的宏。实际上,没有类似的宏用于任何其他数据结构,甚至HashMap
/BTreeMap
,它们使用得更频繁。
但是,cratevelcro
提供了一个linked_list!
宏,它可以做你想要的(并且有一些其他整洁的功能)。
请注意,std::collections::LinkedList
缺少一些使链表具有吸引力的特性——例如,没有基于游标的API。在大多数情况下,您应该使用Vec
或VecDeque
。
没有链表宏,但是您可以使用.extend()
方法来实现类似的功能:
use std::collections::LinkedList;
fn main() {
let mut a: LinkedList<u32> = LinkedList::new();
a.extend(&[0; 10]);
println!("{:?}", a);
}
游乐场
如果你想要单行初始化,你可以使用@Stargateur在评论中建议的其他迭代器方法。这个方法还允许变量不可变,如果你出于某种原因想这样做的话。
use std::collections::LinkedList;
fn main() {
let a: LinkedList<u32> = [0; 10].iter().copied().collect();
println!("{:?}", a);
}
游乐场