Commit Graph

464 Commits

Author SHA1 Message Date
bluss 46ba20ed38 DOC: Update Readme for 0.5 2019-09-25 14:45:35 +02:00
bluss babae41d21 DOC: Add safety documentation on Array trait 2019-09-25 14:43:21 +02:00
bluss ba4d98c5c7 TEST: Update tests for passing without std feature 2019-09-25 14:37:06 +02:00
bluss cac792e633 API: Rename feature flag serde-1 to serde
(Old concerns don't matter anymore, especially with renamed deps.)
2019-09-25 14:34:08 +02:00
bluss 8c3dfbc2b8 Merge pull request #132 from bluss/range-bounds
Use RangeBounds for .drain()'s range argument
2019-09-17 22:13:08 +02:00
bluss 75a6fcdc17 Merge pull request #131 from bluss/rust-2018
Update to Rust 2018
2019-09-17 21:34:09 +02:00
bluss aece292b6c API: Use RangeBounds for .drain()'s range argument 2019-09-17 21:33:32 +02:00
bluss 062247818a FIX: Remove unused cfg variable 2019-09-02 22:08:00 +02:00
bluss e86a32d454 MAINT: Port to Rust 2018 edition 2019-09-02 22:07:30 +02:00
bluss f952e2c788 MAINT: Use ? operator instead of try!() macro 2019-09-02 22:06:20 +02:00
bluss c7424b8113 Merge pull request #129 from bluss/prepare-0.5
Always use MaybeUninit and stop using nodrop fallback, prepare next release
2019-09-02 22:03:33 +02:00
bluss 470cfd2a48 FIX: Update serde impls for Array changes 2019-09-01 14:48:14 +02:00
bluss 7c33afb3ae DOC: Update min rust version to Rust 1.36 for MaybeUninit 2019-09-01 14:48:14 +02:00
bluss 8093e8d886 FEAT: Switch to using MaybeUninit for everything
Use std::mem::MaybeUninit and stop using nodrop as a fallback.
This means we require Rust 1.36
2019-09-01 14:48:14 +02:00
bluss ba94336265 DOC: Draft release note for 0.5 2019-09-01 14:47:44 +02:00
bluss f2aad9f9a7 API: Update ArrayExt's methods to expose slices instead of pointers
This is a nicer and simpler interface to expose, since the ref to uninit
array to pointer cast is not usable anyway (it's historic now, arrayvec
itself does not use it anymore).
2019-09-01 14:47:44 +02:00
bluss 6ed5b7b67f Merge pull request #130 from bluss/fix-extend-zst
Fix .extend() for arrays of zero-sized type elements
2019-09-01 14:30:54 +02:00
bluss 2a3397995d FIX: Fix .extend() for ArrayVec with zero-sized type elements
The raw pointer walk did not do the right thing for ZST, because when
offsets are zero, the start and end pointer would be the same and the
loop ends before incrementing the length correctly.
2019-09-01 14:07:58 +02:00
bluss f7381fa699 TEST: Add test for extending array of ZST
This demonstrates a bug in current extend.
2019-09-01 13:41:30 +02:00
bluss e68c0c7b48 Merge branch '0.4' into master
* 0.4:
  0.4.11
  TEST: Update tests for new MaybeUninit usage
  FEAT: Use stable MaybeUninit when we can (feature detected)
2019-07-10 17:51:59 +02:00
bluss 9792502792 0.4.11 2019-07-10 17:24:40 +02:00
bluss c155b400eb Merge pull request #127 from bluss/stable-maybe-uninit
Use stable MaybeUninit when we can (feature detected)
2019-07-10 17:21:15 +02:00
bluss 93220e55ae TEST: Update tests for new MaybeUninit usage
(Also remove the size check since we can't rely on it, even if we want
to ensure it has no overhead for the bytes case.)
2019-07-10 16:58:11 +02:00
bluss b56c3b78d0 FEAT: Use stable MaybeUninit when we can (feature detected) 2019-07-10 16:40:50 +02:00
Tobias Bucher 76e89544a5 Merge pull request #124 from seanchen1991/master
Add semicolon to return statement for consistency
2019-06-21 02:24:36 +02:00
Tobias Bucher 9932ced043 Merge pull request #121 from badboy/patch-1
Fix word duplication in docs
2019-06-21 02:24:20 +02:00
Sean Chen aab420b2ec Add semicolon to return statement for consistency 2019-06-20 14:36:13 -07:00
Jan-Erik Rediger 841ca1492b Fix word duplication in docs 2019-04-22 14:29:08 +02:00
bluss fd4a6469b9 Merge pull request #117 from despawnerer/add-fromstr-implementation
Implement FromStr for ArrayString
2018-12-23 23:42:07 +01:00
Aleksei Voronov 9207e7442f Implement FromStr for ArrayString
This is very useful for generic code that may want to parse arbitrary
input string into arbitrary other types.

Limitations of the FromStr trait don't allow us to keep the original string slice
inside the CapacityError, unfortunately.
2018-12-23 12:50:29 +01:00
bluss cffdb4602a Merge branch '0.4' of https://github.com/bluss/arrayvec
* '0.4' of https://github.com/bluss/arrayvec:
  0.4.10
  FIX: Remove unused Copy/Clone for MaybeUninit
  FIX: Use repr(C) MaybeUninit after discussion with RalfJung
2018-12-22 20:05:42 +01:00
bluss 21661facf8 0.4.10 2018-12-22 20:04:03 +01:00
bluss 06930d27ce FIX: Remove unused Copy/Clone for MaybeUninit 2018-12-22 19:59:32 +01:00
bluss 9fc6737e1b FIX: Use repr(C) MaybeUninitCopy after discussion with RalfJung
We have a recommendation from the unsafe-wg (no rule yet), that
repr(C) for unions should work this way, so that we can cast from the
union type to one of its fields.
2018-12-22 14:28:20 +01:00
bluss 85d9a06a62 FIX: Use repr(C) MaybeUninit after discussion with RalfJung
We have a recommendation from the unsafe-wg (no rule yet), that
repr(C) for unions should work this way, so that we can cast from the
union type to one of its fields.
2018-12-22 14:25:16 +01:00
bluss 345d420b65 Merge pull request #116 from bluss/maybe-uninit-for-0.5
Update ArrayString to use union and prepare for 0.5
2018-12-18 22:03:24 +01:00
bluss 74745a9756 DOC: Update minimum rust requirement to Rust 1.24
Rust 1.24 is on debian stable. It is compatible with crossbeam (Rust 1.26),
the rdep with most downloads.
2018-12-18 21:40:39 +01:00
bluss f218e094d4 MAINT: Edit travis setup for changed crate features 2018-12-18 21:40:39 +01:00
bluss c4b95279e9 MAINT: Remove feature with no effect ("use_union") 2018-12-16 18:32:14 +01:00
bluss c4cd63209f FEAT: Use a separate union MaybeUninitCopy for ArrayString
This is the "real" union solution, and ArrayString can use it since its
backing array is Copy. Unfortunately, we'll have to use the Copy bound
on the type, making it "viral" and visible in the user API.
2018-12-16 18:32:14 +01:00
bluss 784ccc97ca DOC: Remove warning on ArrayVec's into_inner method 2018-12-16 18:32:14 +01:00
bluss f5290c1eea FIX: Remove unused .as_mut_ptr() on the Array trait
Raw pointer taking should go through the MaybeUninit wrappers around the
arrays anyway, when it is partially uninitialized, which it often is.

The remaining .as_ptr() and .as_slice() methods on Array is only used
on a fully initialized array in ArrayString::from_byte_string
2018-12-16 18:32:14 +01:00
bluss 6c099e148f FIX: Add associated constant for Array's capacity
This isn't of much use at the moment, but future Rust features could
mean we can use it.
2018-12-16 18:32:14 +01:00
bluss 7496a5f597 Merge pull request #115 from bluss/merge-0.4
Merge 0.4 branch to master
2018-12-16 18:28:50 +01:00
bluss 94ab27a649 Merge branch '0.4' of https://github.com/bluss/arrayvec into merge-0.4
* '0.4' of https://github.com/bluss/arrayvec:
  0.4.9
  TEST: Add test that ensures the MaybeUninit impl is used on nightly
  FIX: Remove use of uninitialized in ArrayString
  FEAT: Implement a "MaybeUninit" and use it conditionally
  TEST: Add test that Some(ArrayVec<[&_;_]>).is_some()
  MAINT: Test the 0.4 branch in travis
2018-12-16 18:09:20 +01:00
bluss 2316b85fbc 0.4.9 2018-12-16 18:02:49 +01:00
bluss 3edc9a6de7 Merge pull request #114 from bluss/maybe-uninit-0.4
Implement a "MaybeUninit" and use it conditionally (0.4.x version)
2018-12-16 17:51:59 +01:00
bluss f0ec3e1398 TEST: Add test that ensures the MaybeUninit impl is used on nightly 2018-12-16 10:46:38 +01:00
bluss d395a01e7c FIX: Remove use of uninitialized in ArrayString
We can't fix this properly (MaybeUninit with a union) until we change
the user visible API (we need to require that A: Copy.

As a temporary solution for arrayvec version 0.4.*, we use zeroed to
initialize an array of bytes, instead of using uninitialized. This may
have a negative performance impact, but the fix is to upgrade to future
arrayvec 0.5.
2018-12-15 15:12:03 +01:00
bluss 29012231a8 FEAT: Implement a "MaybeUninit" and use it conditionally
Use a build script to detect if we can use MaybeUninit or NoDrop.
Enabling unstable features automatically is not ideal, but since it's
a soundness issue we should do it.

Use a MaybeUninit-like union on nightly when we can. We use a feature
detection script in build.rs, so that we also go back to the fallback if
the unstable feature changes in an unexpected way.

We need to continue to use NoDrop for best working stable
implementation, but we eagerly use our union solution where we can,
currently only in nightlies.

Rustc feature probe code written by Josh Stone (cuviper),
taken from num-bigint.
2018-12-15 15:12:03 +01:00