Commit Graph

475 Commits

Author SHA1 Message Date
Clar Charr 55bedc922a Make zero-capacity ArrayVec a zero-sized type. 2018-10-14 17:25:45 -04:00
gnzlbg 9f57879028 fix undefined behavior in DerefMut of ArrayString 2018-08-31 22:43:05 +02:00
bluss ac61ce748b TEST: Fix drop tests for older Rust
In the test, test with Vec first to see how Rust implements panic
recovery while elements drop. If Vec drops all the elements, then we
test that arrayvec does too.
2018-03-25 23:49:42 +02:00
bluss 9db64d5948 FIX: Fix a typo in a comment 2018-03-25 23:26:20 +02:00
bluss 602e55dc67 FEAT: Use drop_in_place for truncate and clear (and drop)
This should perform better in both release and debug mode.

NOTE: This is significant because it changes the drop order of the
elements, and how we handle panicking destructors. If just one of the
destructors panic during ArrayVec drop, clear or truncate, the rest of
the elements should still drop. If we encounter another panic during
that process, however, Rust will abort as usual for panic during
unwinding.
2018-03-25 23:26:20 +02:00
bluss 3f9cdc52cd TEST: Add test that we drop all elements even if one of them panics 2018-03-25 23:26:20 +02:00
bluss 16aabf7c2c DOC: Fix typo in insert doc 2018-02-10 21:57:36 +01:00
bluss c1b72500cd REFAC Use clone_from_slice, extend in ArrayVec::clone_from
This is just a cleanup of the code, with less repetition.
2018-02-06 19:29:15 +01:00
bluss 0872a5946c 0.4.7 2018-01-17 20:45:50 +01:00
bluss 2eeed4bae5 Merge pull request #90 from jeehoonkang/rust-1.12.1
Support Rust 1.13.0
2018-01-17 20:35:36 +01:00
bluss bb92d72fd5 Merge pull request #91 from bluss/future-compat
FIX: Fix future compat warning with pointer casts
2018-01-17 20:33:41 +01:00
bluss a903e1a770 FIX: Fix future compat warning with pointer casts
```
warning: the type of this value must be known in this context
   --> src/lib.rs:312:32
    |
312 |                 ptr::copy(p, p.offset(1), len - index);
    |                                ^^^^^^
    |
    = note: #[warn(tyvar_behind_raw_pointer)] on by default
    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
    = note: for more information, see issue #46906 <https://github.com/rust-lang/rust/issues/46906>
```
2018-01-17 20:25:47 +01:00
Jeehoon Kang 3df64ccd50 Support Rust 1.13.0 2018-01-16 15:04:45 +09:00
bluss ef133ef960 FIX: Use drop_in_place in IntoIter's drop. 2017-12-03 21:57:38 +01:00
bluss 7a416ea146 MAINT: Use author name in copyright thing 2017-12-03 21:57:38 +01:00
bluss 807d64b89a Merge pull request #88 from ignatenkobrain/master
include LICENSE to sub-crates
2017-12-03 21:54:38 +01:00
Igor Gnatenko d281b3866d include LICENSE to sub-crates
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2017-12-03 21:23:58 +01:00
bluss b3e5b1e1ac 0.4.6 2017-11-04 11:57:17 +01:00
bluss 55e250adb7 Merge pull request #85 from bluss/conditional-16-bit-array-master
Fix 1 << 16 size array impl: only possible on bigger than 16-bit
2017-11-04 00:13:17 +01:00
bluss ce009233ae BUG: Fix 1 << 16 size array impl: only possible on bigger than 16-bit 2017-11-03 19:29:54 +01:00
bluss e95d440f54 DOC: Update readme, nodrop section is in its own directory already 2017-10-28 10:34:40 +02:00
bluss e364e2e79d 0.4.5 2017-10-27 22:54:46 +02:00
bluss a2e3fcea3f DOC: Minor fixes in docs, for ' → ’ 2017-10-27 22:54:46 +02:00
bluss db616eb9c5 Merge pull request #81 from bluss/no-odds-in-arrayvec
Remove odds dependency in arrayvec
2017-10-27 22:40:31 +02:00
bluss 4195f1a741 FEAT: Benchmarks for arraystring.try_push / push
These benches inform encode_utf8 changes, if any.
2017-10-27 22:31:49 +02:00
bluss 456aeaf557 FEAT: Remove odds dependency in arrayvec
Copy the encode_utf8 function from odds. std encode_utf8 requires Rust
1.15 and has a different signature, this one seems to fit us better.
2017-10-27 22:31:49 +02:00
bluss 4fe3e05997 nodrop 0.1.12 2017-10-27 21:51:45 +02:00
bluss 9d9250f462 Merge pull request #80 from bluss/no-odds-in-no-drop
nodrop: Remove odds dependency
2017-10-27 21:47:54 +02:00
Tobias Bucher 8a25e7f54e Merge pull request #79 from bluss/promise-debug-checks
Promise debug assertions for unsafe methods
2017-10-27 00:08:07 +02:00
bluss 7db0d5788f FEAT: nodrop: No odds dependency
Copy the required unreachable and debug assertion; saves us dependency
on odds.

We could also depend on crate unreachable, but that adds dep on
2 microcrates.
2017-10-26 22:35:15 +02:00
bluss 895d450366 DOC: Promise debug assertions for unsafe methods
Instead of being vague about it, we can promise it.

We continue to be a bit vague in ArrayString::set_len.  I don't see how
to add a char boundary check in ArrayString::set_len unfortunately.

It's a tricky issue, checking char boundaries requires reading the
memory of the string, and we don't even know if the user of set_len has
initialized that area of memory yet (but they hopefully did).
2017-10-26 19:27:47 +02:00
bluss f8a19cddd8 Merge pull request #78 from DenialAdams/master
Add pop, truncate, and remove functions to ArrayString.
2017-10-26 19:07:37 +02:00
Richard McCormack 187dd627e0 Add pop, truncate, and remove functions to ArrayString. Addresses #66 2017-10-26 12:57:14 -04:00
bluss 269a25cc41 nodrop 0.1.11 2017-10-23 21:38:27 +02:00
bluss a4411cf187 Merge pull request #77 from bluss/nodrop-size-test
[nodrop] Fix broken test
2017-10-23 21:08:31 +02:00
bluss 4414a01a26 BUG: [nodrop] Fix broken test
Fix a broken size test in nodrop; this test does not tell us about enum
layout optimizations.
2017-10-23 21:02:32 +02:00
bluss 75abbd6145 0.4.4 2017-10-21 14:01:46 +02:00
bluss acb0cf25e7 Merge pull request #75 from niklasf/truncate
Add ArrayVec::truncate()
2017-10-18 18:35:55 +02:00
Niklas Fiekas 5257cbd2b4 Add ArrayVec::truncate() 2017-10-18 18:14:07 +02:00
bluss ace20a9f43 DOC: Add docs for default values 2017-10-16 22:45:27 +02:00
bluss 9156256501 0.4.3 2017-10-16 22:39:28 +02:00
bluss 30d8e70d63 nodrop 0.1.10 2017-10-16 22:25:18 +02:00
bluss 545ae6e609 FEAT: Update nodrop for stable needs_drop 2017-10-16 22:17:02 +02:00
bluss f9a9158185 MAINT: Remove unused Makefile
was used for old doc generation
2017-10-16 22:10:58 +02:00
bluss 0c7aebe2dd MAINT: Don't depend on odds/std or nodrop/std
We don't have any reason to ask for std in odds (anymore, long after
Rust 1.6 now).
2017-10-16 22:03:55 +02:00
bluss ac64b5b661 BUG: Fix "unused unsafe block" warning
This warning was only visible on stable, not nightly, which seems like
a bug.
2017-10-08 18:15:05 +02:00
bluss 5df02fd45d Merge pull request #74 from bluss/improved-extend
Improve .extend() performance
2017-10-08 17:54:39 +02:00
bluss 793ad30be9 FEAT: Improve .extend() performance
We have to use the "SetLenOnDrop" pattern (see stdlib Vec) here.

Keep the length in a separate variable, write it back on scope exit. To
help the compiler with alias analysis and stuff.  We update the length
to handle panic in the iteration of the user's iterator, without
dropping any elements on the floor.

Note: This code was tested without the scope guard using the new option
-Zmutable-noalias, which had no effect here.

benchmark:

```
 name                  before.txt ns/iter  after.txt ns/iter  diff ns/iter   diff %
 extend_with_constant  280 (1828 MB/s)     74 (6918 MB/s)             -206  -73.57%
 extend_with_range     1,285 (398 MB/s)    979 (522 MB/s)             -306  -23.81%
 extend_with_slice     29 (17655 MB/s)     14 (36571 MB/s)             -15  -51.72%
```
2017-10-08 17:44:06 +02:00
bluss af8b746fc4 FEAT: Add benchmarks for .extend() 2017-10-08 17:31:05 +02:00
bluss d89699ff63 DOC: Fix the docs link in the readme 2017-09-24 18:16:25 +02:00