1 | //! **arrayvec** provides the types [`ArrayVec`] and [`ArrayString`]: |
2 | //! array-backed vector and string types, which store their contents inline. |
3 | //! |
4 | //! The arrayvec package has the following cargo features: |
5 | //! |
6 | //! - `std` |
7 | //! - Optional, enabled by default |
8 | //! - Use libstd; disable to use `no_std` instead. |
9 | //! |
10 | //! - `serde` |
11 | //! - Optional |
12 | //! - Enable serialization for ArrayVec and ArrayString using serde 1.x |
13 | //! |
14 | //! - `zeroize` |
15 | //! - Optional |
16 | //! - Implement `Zeroize` for ArrayVec and ArrayString |
17 | //! |
18 | //! ## Rust Version |
19 | //! |
20 | //! This version of arrayvec requires Rust 1.51 or later. |
21 | //! |
22 | #![doc (html_root_url="https://docs.rs/arrayvec/0.7/" )] |
23 | #![cfg_attr (not(feature="std" ), no_std)] |
24 | |
25 | #[cfg (feature="serde" )] |
26 | extern crate serde; |
27 | |
28 | #[cfg (not(feature="std" ))] |
29 | extern crate core as std; |
30 | |
31 | pub(crate) type LenUint = u32; |
32 | |
33 | macro_rules! assert_capacity_limit { |
34 | ($cap:expr) => { |
35 | if std::mem::size_of::<usize>() > std::mem::size_of::<LenUint>() { |
36 | if $cap > LenUint::MAX as usize { |
37 | panic!("ArrayVec: largest supported capacity is u32::MAX" ) |
38 | } |
39 | } |
40 | } |
41 | } |
42 | |
43 | macro_rules! assert_capacity_limit_const { |
44 | ($cap:expr) => { |
45 | if std::mem::size_of::<usize>() > std::mem::size_of::<LenUint>() { |
46 | if $cap > LenUint::MAX as usize { |
47 | [/*ArrayVec: largest supported capacity is u32::MAX*/][$cap] |
48 | } |
49 | } |
50 | } |
51 | } |
52 | |
53 | mod arrayvec_impl; |
54 | mod arrayvec; |
55 | mod array_string; |
56 | mod char; |
57 | mod errors; |
58 | mod utils; |
59 | |
60 | pub use crate::array_string::ArrayString; |
61 | pub use crate::errors::CapacityError; |
62 | |
63 | pub use crate::arrayvec::{ArrayVec, IntoIter, Drain}; |
64 | |