是否有像 vec! 这样的链接列表的等效宏?在生锈

Is there an equivalent macro for linked list like vec! in Rust

所以为了简单地初始化一个向量,有vec!宏.

let mut vec_of_zeroes: Vec<usize> = vec![0;10];

我想知道是否也有一个简单的标准宏来初始化链表?

use std::collections::LinkedList;

let mut list_of_zeroes: LinkedList<usize> = /*macro here?*/;

如果没有,不用担心。谢谢你的时间。

没有链接列表宏,但是你可以使用.extend()方法来实现类似的东西:

use std::collections::LinkedList;

fn main() {
    let mut a: LinkedList<u32> = LinkedList::new();
    
    a.extend(&[0; 10]);
    
    println!("{:?}", a);
}

Playground

如果你想进行单行初始化,你可以使用@Stargateur 在评论中建议的其他一些迭代器方法。如果您出于某种原因需要,此方法还允许变量不可变。

use std::collections::LinkedList;

fn main() {
    let a: LinkedList<u32> = [0; 10].iter().copied().collect();
    
    println!("{:?}", a);
}

Playground

不,标准库中没有这样的宏。事实上,任何其他数据结构都没有类似的宏,even HashMap / BTreeMap, which are much more frequently used

但是,crate velcro provides a linked_list! 宏可以满足您的需求(并具有其他一些简洁的功能)。

请注意,std::collections::LinkedList 缺少一些使链表具有吸引力的功能 - 例如,没有基于游标的 API。在大多数情况下,您应该改用 VecVecDeque