From f1d73f4feb966fa4423052143fd6f63e29cda5a2 Mon Sep 17 00:00:00 2001 From: bluss Date: Sun, 25 Nov 2018 09:16:48 +0100 Subject: [PATCH] FEAT: Add array sizes 33 to 128 and 129 to 255 under feature flags This way we cover all users up to 256 at least. The reason these are not enabled by default is that they slow down the compilation of the crate by a factor of 2-3x. --- Cargo.toml | 3 +++ src/array.rs | 41 +++++++++++++++++++++++++++++++++++------ 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index dd5e968..5c3b7a4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,6 +40,9 @@ std = [] use_union = [] serde-1 = ["serde"] +array-sizes-33-128 = [] +array-sizes-129-255 = [] + [package.metadata.docs.rs] features = ["serde-1"] diff --git a/src/array.rs b/src/array.rs index 2ca90b3..be93f0f 100644 --- a/src/array.rs +++ b/src/array.rs @@ -77,15 +77,44 @@ macro_rules! fix_array_impl { macro_rules! fix_array_impl_recursive { ($index_type:ty, ) => (); - ($index_type:ty, $len:expr, $($more:expr,)*) => ( - fix_array_impl!($index_type, $len); - fix_array_impl_recursive!($index_type, $($more,)*); + ($index_type:ty, $($len:expr,)*) => ( + $(fix_array_impl!($index_type, $len);)* ); } -fix_array_impl_recursive!(u8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 40, 48, 50, 56, 64, 72, 96, 100, 128, 160, 192, 200, 224,); +fix_array_impl_recursive!(u8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, ); + +#[cfg(not(feature="array-sizes-33-128"))] +fix_array_impl_recursive!(u8, 32, 40, 48, 50, 56, 64, 72, 96, 100, 128, ); + +#[cfg(feature="array-sizes-33-128")] +fix_array_impl_recursive!(u8, +32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, +52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, +72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, +92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, +109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, +125, 126, 127, 128, +); + +#[cfg(not(feature="array-sizes-129-255"))] +fix_array_impl_recursive!(u8, 160, 192, 200, 224,); + +#[cfg(feature="array-sizes-129-255")] +fix_array_impl_recursive!(u8, +129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, +141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, +157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, +173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, +189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, +205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, +221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, +237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, +253, 254, 255, +); + fix_array_impl_recursive!(u16, 256, 384, 512, 768, 1024, 2048, 4096, 8192, 16384, 32768,); // This array size doesn't exist on 16-bit #[cfg(any(target_pointer_width="32", target_pointer_width="64"))]