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 ArrayVec
MaybeUninit
(now unconditionally) in the implementation of ArrayString
serde
.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-128
array-size-129-255
0.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) -> char
Remove 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_string
0.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 ArrayVec
0.3.12
0.3.11
0.3.10
0.3.8
0.3.7