mirror of
https://github.com/openharmony/third_party_rust_rust-smallvec.git
synced 2026-07-19 23:03:32 -04:00
Auto merge of #221 - cuviper:crate-macro, r=mbrubeck
Make sure smallvec! is usable without being in scope Macro recursion should use a `$crate` prefix to reliably find itself.
This commit is contained in:
@@ -145,7 +145,7 @@ macro_rules! smallvec {
|
||||
$crate::SmallVec::from_elem($elem, $n)
|
||||
});
|
||||
($($x:expr),*$(,)*) => ({
|
||||
let count = 0usize $(+ smallvec!(@one $x))*;
|
||||
let count = 0usize $(+ $crate::smallvec!(@one $x))*;
|
||||
let mut vec = $crate::SmallVec::new();
|
||||
if count <= vec.inline_size() {
|
||||
$(vec.push($x);)*
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
/// This file tests `smallvec!` without actually having the macro in scope.
|
||||
/// This forces any recursion to use a `$crate` prefix to reliably find itself.
|
||||
|
||||
#[test]
|
||||
fn smallvec() {
|
||||
let mut vec: smallvec::SmallVec<[i32; 2]>;
|
||||
|
||||
macro_rules! check {
|
||||
($init:tt) => {
|
||||
vec = smallvec::smallvec! $init;
|
||||
assert_eq!(*vec, *vec! $init);
|
||||
}
|
||||
}
|
||||
|
||||
check!([0; 0]);
|
||||
check!([1; 1]);
|
||||
check!([2; 2]);
|
||||
check!([3; 3]);
|
||||
|
||||
check!([]);
|
||||
check!([1]);
|
||||
check!([1, 2]);
|
||||
check!([1, 2, 3]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user