diff options
Diffstat (limited to 'third_party/rust/arrayvec/src/lib.rs')
-rw-r--r-- | third_party/rust/arrayvec/src/lib.rs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/third_party/rust/arrayvec/src/lib.rs b/third_party/rust/arrayvec/src/lib.rs new file mode 100644 index 0000000000..5dc0273a70 --- /dev/null +++ b/third_party/rust/arrayvec/src/lib.rs @@ -0,0 +1,59 @@ +//! **arrayvec** provides the types [`ArrayVec`] and [`ArrayString`]: +//! array-backed vector and string types, which store their contents inline. +//! +//! The arrayvec package has the following cargo features: +//! +//! - `std` +//! - Optional, enabled by default +//! - Use libstd; disable to use `no_std` instead. +//! +//! - `serde` +//! - Optional +//! - Enable serialization for ArrayVec and ArrayString using serde 1.x +//! +//! ## Rust Version +//! +//! This version of arrayvec requires Rust 1.51 or later. +//! +#![doc(html_root_url="https://docs.rs/arrayvec/0.7/")] +#![cfg_attr(not(feature="std"), no_std)] + +#[cfg(feature="serde")] +extern crate serde; + +#[cfg(not(feature="std"))] +extern crate core as std; + +pub(crate) type LenUint = u32; + +macro_rules! assert_capacity_limit { + ($cap:expr) => { + if std::mem::size_of::<usize>() > std::mem::size_of::<LenUint>() { + if $cap > LenUint::MAX as usize { + panic!("ArrayVec: largest supported capacity is u32::MAX") + } + } + } +} + +macro_rules! assert_capacity_limit_const { + ($cap:expr) => { + if std::mem::size_of::<usize>() > std::mem::size_of::<LenUint>() { + if $cap > LenUint::MAX as usize { + [/*ArrayVec: largest supported capacity is u32::MAX*/][$cap] + } + } + } +} + +mod arrayvec_impl; +mod arrayvec; +mod array_string; +mod char; +mod errors; +mod utils; + +pub use crate::array_string::ArrayString; +pub use crate::errors::CapacityError; + +pub use crate::arrayvec::{ArrayVec, IntoIter, Drain}; |