是否有像 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);
}
如果你想进行单行初始化,你可以使用@Stargateur 在评论中建议的其他一些迭代器方法。如果您出于某种原因需要,此方法还允许变量不可变。
use std::collections::LinkedList;
fn main() {
let a: LinkedList<u32> = [0; 10].iter().copied().collect();
println!("{:?}", a);
}
不,标准库中没有这样的宏。事实上,任何其他数据结构都没有类似的宏,even HashMap
/ BTreeMap
, which are much more frequently used。
但是,crate velcro
provides a linked_list!
宏可以满足您的需求(并具有其他一些简洁的功能)。
请注意,std::collections::LinkedList
缺少一些使链表具有吸引力的功能 - 例如,没有基于游标的 API。在大多数情况下,您应该改用 Vec
或 VecDeque
。
所以为了简单地初始化一个向量,有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);
}
如果你想进行单行初始化,你可以使用@Stargateur 在评论中建议的其他一些迭代器方法。如果您出于某种原因需要,此方法还允许变量不可变。
use std::collections::LinkedList;
fn main() {
let a: LinkedList<u32> = [0; 10].iter().copied().collect();
println!("{:?}", a);
}
不,标准库中没有这样的宏。事实上,任何其他数据结构都没有类似的宏,even HashMap
/ BTreeMap
, which are much more frequently used。
但是,crate velcro
provides a linked_list!
宏可以满足您的需求(并具有其他一些简洁的功能)。
请注意,std::collections::LinkedList
缺少一些使链表具有吸引力的功能 - 例如,没有基于游标的 API。在大多数情况下,您应该改用 Vec
或 VecDeque
。