as_ptr and as_mut_ptr to ArrayString @YuhanLiin #260as_slice, as_mut_slice methods to IntoIter by @clarfonthey #224Zeroize trait by @elichai.as_mut_str() to ArrayString by @clarfontheyremaining_capacity to ArrayString by @bhgomeszero_filled constructor by @c410-f3rretain by @TennyZhuang and @niklasfconst by @bhgomes:.take() and .into_inner_unchecked() by @conradludgateclone_from now uses truncate when needed by @a1phyrfn new_const is now the way to const-construct arrayvec and arraystring, and fn new has been reverted to a regular “non-const” function. This works around performance issue #182, where the const fn version did not optimize well. Change by @bluss with thanks to @rodrimati1992 and @niklasf for analyzing the problem.
The deprecated feature flag unstable-const-fn was removed, since it's not needed
Optimize .retain() by using the same algorithm as in std, change by @niklasf, issue #174. Original optimization in Rust std by @oxalica in rust-lang/rust/pull/81126
The ArrayVec::new and ArrayString::new constructors are properly const fns on stable and the feature flag unstable-const-fn is now deprecated. by @rodrimati1992
Small fix to the capacity check macro by @Xaeroxe
Typo fix in documentation by @cuviper
Small code cleanup by @bluss
The const generics release 🎉. Arrayvec finally implements what it wanted to implement, since its first version: a vector backed by an array, with generic parameters for the arbitrary element type and backing array capacity.
The New type syntax is ArrayVec<T, CAP> where CAP is the arrayvec capacity. For arraystring the syntax is ArrayString<CAP>.
Length is stored internally as u32; this limits the maximum capacity. The size of the ArrayVec or ArrayString structs for the same capacity may grow slightly compared with the previous version (depending on padding requirements for the element type). Change by @bluss.
Arrayvec's .extend() and FromIterator/.collect() to arrayvec now panic if the capacity of the arrayvec is exceeded. Change by @bluss.
Arraystring now implements TryFrom<&str> and TryFrom<fmt::Arguments> by @c410-f3r
Minimum supported rust version is Rust 1.51
is_empty methods for ArrayVec and ArrayString by @nicbnTryFrom<Slice> for ArrayVec by @paulkernfeldunstable-const-fn to make new methods const by @m-ou-seError::description by @AnderEnderadd by @hbinaas_ptr, as_mut_ptr accessors directly on the ArrayVec by @tbu- (matches the same addition to Vec which happened in Rust 1.37).ArrayString::len (now available directly, not just through deref to str).&mut [u8] for encoding chars into ArrayString (uninit best practice fix).get_unchecked_mut where the target may be uninitialized everywhere relevant in the ArrayVec implementation (uninit best practice fix).ArrayVec::dispose is now deprecated (it has no purpose anymore)get_unchecked_mut where the target may be uninitialized everywhere relevant in the ArrayVec implementation.MaybeUninit (now unconditionally) in the implementation of ArrayVecMaybeUninit (now unconditionally) in the implementation of ArrayStringserde.Array trait interface, and it is now easier to use for users outside the crate.FromStr impl for ArrayString by @despawnerertry_extend_from_slice to ArrayVec, which is always efficient by @Thomasdezeeuw.remaining_capacity by @Thomasdezeeuwextend method.drop_in_place for truncate and clear methods. This affects drop order and resume from panic during drop.MaybeUninit improvements.0.4.11
MaybeUninit. This extends the soundness work introduced in 0.4.9, we are finally able to use this in stable. We use feature detection (build script) to enable this at build time.0.4.10
repr(C) in the union version that was introduced in 0.4.9, to allay some soundness concerns.0.4.9
union in the implementation on when this is detected to be supported (nightly only for now). This is a better solution for treating uninitialized regions correctly, and we'll use it in stable Rust as soon as we are able. When this is enabled, the ArrayVec has no space overhead in its memory layout, although the size of the vec should not be relied upon. (See #114)ArrayString updated to not use uninitialized memory, it instead zeros its backing array. This will be refined in the next version, since we need to make changes to the user visible API.use_union feature now does nothing (like its documentation foretold).0.4.8
Implement Clone and Debug for IntoIter by @clarcharr
Add more array sizes under crate features. These cover all in the range up to 128 and 129 to 255 respectively (we have a few of those by default):
array-size-33-128array-size-129-2550.4.7
drop_in_place when dropping the arrayvec by-value iterator0.3.25
0.4.6
0.3.24
0.4.5
Add methods to ArrayString by @DenialAdams:
.pop() -> Option<char>.truncate(new_len).remove(index) -> charRemove dependency on crate odds
Document debug assertions in unsafe methods better
0.4.4
ArrayVec::truncate() by @niklasf0.4.3
ArrayVec::extend with a lower level implementation (#74)0.4.2
new to CapacityError.0.4.1
Default impl to ArrayString by @tbu-0.4.0
Reformed signatures and error handling by @bluss and @tbu-:
ArrayVec's push, insert, remove, swap_remove now match Vec's corresponding signature and panic on capacity errors where applicable.try_push, insert and checked methods pop_at, swap_pop.ArrayString's push methods.Use a local version of the RangeArgument trait
Add array sizes 50, 150, 200 by @daboross
Support serde 1.0 by @daboross
New method .push_unchecked() by @niklasf
ArrayString implements PartialOrd, Ord by @tbu-
Require Rust 1.14
crate feature use_generic_array was dropped.
0.3.23
PartialOrd, Ord as well as PartialOrd<str> for ArrayString.0.3.22
Array for the 65536 size0.3.21
encode_utf8 from crate oddsArrayString::from_byte_string0.3.20
ArrayString’s .push(char)-0.3.19
use_generic_array which allows using their GenericArray just like a regular fixed size array for the storage of an ArrayVec.0.3.18
ArrayVec::insert! It would be buggy if self.len() < index < self.capacity(). Take note of the push out behavior specified in the docs.0.3.17
use_union which forwards to the nodrop crate feature.is_full() to ArrayVec and ArrayString.0.3.16
.retain() to ArrayVec..as_slice(), .as_mut_slice() to ArrayVec and .as_str() to ArrayString.0.3.15
no_std (requires Rust 1.6 to opt out).Clone::clone_from for ArrayVec and ArrayString0.3.14
ArrayString::from(&str)0.3.13
DerefMut impl for ArrayString..simplify() to drop the element for CapacityError..dispose() to ArrayVec0.3.12
0.3.11
0.3.10
0.3.8
0.3.7