rc_vec/
lib.rs

1#![doc = include_str!("../README.md")]
2#![cfg_attr(docsrs, feature(doc_cfg))]
3#![cfg_attr(not(feature = "std"), no_std)]
4
5extern crate alloc;
6
7mod raw;
8mod is_zst;
9mod rc_vec;
10mod utils;
11
12pub use rc_vec::*;
13pub use unique_rc;
14
15#[cfg(test)]
16mod tests;
17
18/// Like `vec![]`, create a [`RcVec`]
19///
20/// # Examples
21///
22/// ```
23/// let vec = rc_vec::rc_vec![1, 2, 3];
24/// assert_eq!(vec, [1, 2, 3]);
25/// ```
26///
27/// ```
28/// let vec = rc_vec::rc_vec![3; 4];
29/// assert_eq!(vec, [3, 3, 3, 3]);
30/// ```
31///
32/// ```
33/// let vec = rc_vec::rc_vec![];
34/// assert_eq!(vec.len(), 0);
35/// # assert_ne!(vec, [1]);
36/// ```
37#[macro_export]
38macro_rules! rc_vec {
39    () => {
40        $crate::RcVec::new()
41    };
42    ($elem:expr; $n:expr) => {
43        $crate::RcVec::from_elem($elem, $n)
44    };
45    ($($t:tt)*) => {
46        $crate::RcVec::from_array([$($t)*])
47    };
48}
49
50/// Like `vec![]`, create a [`ArcVec`]
51///
52/// # Examples
53///
54/// ```
55/// let vec = rc_vec::arc_vec![1, 2, 3];
56/// assert_eq!(vec, [1, 2, 3]);
57/// ```
58///
59/// ```
60/// let vec = rc_vec::arc_vec![3; 4];
61/// assert_eq!(vec, [3, 3, 3, 3]);
62/// ```
63///
64/// ```
65/// let vec = rc_vec::arc_vec![];
66/// assert_eq!(vec.len(), 0);
67/// # assert_ne!(vec, [1]);
68/// ```
69#[macro_export]
70macro_rules! arc_vec {
71    () => {
72        $crate::ArcVec::new()
73    };
74    ($elem:expr; $n:expr) => {
75        $crate::ArcVec::from_elem($elem, $n)
76    };
77    ($($t:tt)*) => {
78        $crate::ArcVec::from_array([$($t)*])
79    };
80}