是否有一个类似于vec的链表宏!在生锈



因此,为了方便地初始化向量,这里有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。在大多数情况下,您应该使用VecVecDeque

没有链表宏,但是您可以使用.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);
}

游乐场

相关内容

  • 没有找到相关文章

最新更新