| 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 |  | 
|---|