bors
415e55a02c
auto merge of #11071 : huonw/rust/quiet-test, r=cmr
2013-12-19 18:51:39 -08:00
Huon Wilson
c00104f36a
std: silence warnings when compiling test.
2013-12-20 01:26:03 +11:00
bors
e86cdaf23d
auto merge of #11061 : huonw/rust/opt-unsafe-vec, r=alexcrichton
...
Before:
```
test vec::bench::random_inserts ... bench: 15025 ns/iter (+/- 409)
test vec::bench::random_removes ... bench: 16063 ns/iter (+/- 276)
```
After:
```
test vec::bench::random_inserts ... bench: 5257 ns/iter (+/- 321)
test vec::bench::random_removes ... bench: 4980 ns/iter (+/- 94)
```
2013-12-19 04:26:34 -08:00
Huon Wilson
acd2be46f1
std::vec: use some unsafe code to optimise remove
.
...
Also, add `.remove_opt` and replace `.unshift` with `.remove(0)`. The
code size reduction seem to compensate for not having the optimised
special cases.
This makes the included benchmark more than 3 times faster.
2013-12-19 23:20:20 +11:00
Huon Wilson
81632513c1
std::vec: replace .insert with a small amount of unsafe code.
...
This makes the included benchmark more than 3 times faster. Also,
`.unshift(x)` is now faster as `.insert(0, x)` which can reuse the
allocation if necessary.
2013-12-19 14:00:44 +11:00
Huon Wilson
9177f7ecb4
std::vec: remove .as_muf_buf, replaced by .as_mut_ptr & .len.
2013-12-19 10:18:02 +11:00
Huon Wilson
4c79b22ef2
std::vec: remove .as_imm_buf, replaced by .as_ptr & .len.
...
There's no need for the restrictions of a closure with the above methods.
2013-12-19 09:26:13 +11:00
bors
fb6ec38352
auto merge of #10998 : thestinger/rust/iter, r=alexcrichton
2013-12-17 05:11:41 -08:00
bors
793eb1d38d
auto merge of #10996 : huonw/rust/more-vec-raw, r=cmr
...
The removal of the aliasing &mut[] and &[] from `shift_opt` also comes with its simplification.
The above also allows the use of `copy_nonoverlapping_memory` in `[].copy_memory` (I did an audit of each use of `.copy_memory` and `std::vec::bytes::copy_memory`, and I believe none of them are called with arguments can ever alias). This changes requires that `unsafe` code using `copy_memory` **needs** to respect the aliasing rules of `&mut[]`.
2013-12-17 03:51:40 -08:00
Huon Wilson
dd355700cf
std::vec: make init_elem nicer by doing fewer moves.
2013-12-17 08:36:04 +11:00
Huon Wilson
8a5a5922c6
std::vec: convert .copy_memory to use copy_nonoverlapping_memory.
...
It is required that &mut[]s are disjoint from all other &(mut)[]s, so
this assumption is ok.
2013-12-17 08:36:04 +11:00
Huon Wilson
5c147cc408
std::vec::bytes: remove the reference to overlapping src and dest in
...
docs for copy_memory.
&mut [u8] and &[u8] really shouldn't be overlapping at all (part of the
uniqueness/aliasing guarantee of &mut), so no point in encouraging it.
2013-12-17 08:36:04 +11:00
Huon Wilson
d0ae820765
std::vec::raw: convert copy_memory to a method.
2013-12-17 08:36:01 +11:00
Huon Wilson
ad20a78c54
std::vec::raw: convert init_elem to a method.
2013-12-17 08:35:34 +11:00
Daniel Micay
664c9af1e9
vec: avoid some unsafe code in MoveIterator's dtor
2013-12-16 08:58:41 -05:00
Huon Wilson
33b6bf4bc1
std::vec: remove aliasing &mut [] and &[] from shift_opt.
...
Also, dramatically simplify it with some tasteful raw pointers, rather
than treating everything as a nail with `transmute`.
2013-12-17 00:18:51 +11:00
Daniel Micay
e3b168dab3
vec: make the move iterator fast for all types
...
Closes #10976
2013-12-16 05:56:42 -05:00
Patrick Walton
a87786e3e9
librustc: Remove identifiers named box
, since it's about to become a keyword.
2013-12-15 10:41:15 -08:00
bors
8d52dfbace
auto merge of #10984 : huonw/rust/clean-raw, r=cmr
...
See commits for details.
2013-12-15 06:56:27 -08:00
Huon Wilson
164f7a290e
std::vec: convert to(_mut)_ptr to as_... methods on &[] and &mut [].
2013-12-15 23:37:41 +11:00
Huon Wilson
f53292f7ee
Move std::{str,vec}::raw::set_len to an unsafe method on Owned{Vector,Str}.
2013-12-15 23:05:30 +11:00
Huon Wilson
4f62c969f6
std::vec: move pointless raw::get
and unsafe_get
functions.
...
This can easily be written as `(*v.unsafe_ref(i)).clone()`, or just
`*v.unsafe_ref(i)` for primitive types like `i32` (the common case).
2013-12-15 23:05:00 +11:00
Huon Wilson
0393c402a6
std::vec::raw: clean up docs.
2013-12-15 22:35:08 +11:00
Huon Wilson
a43bf3ff99
std::vec::bytes: remove obsolete functions.
...
These are less useful versions of the comparison operators and TotalOrd
trait.
2013-12-15 22:34:56 +11:00
Huon Wilson
f97040a93b
std::vec: remove unnecessary count parameter on {bytes,
...
raw}::copy_memory.
Slices carry their length with them, so we can just use that
information.
2013-12-15 22:23:11 +11:00
Huon Wilson
55534100ce
std: fix spelling in docs.
2013-12-15 16:26:09 +11:00
Eduard Burtescu
331c6efe45
Inline Finallyalizer::drop, allowing LLVM to optimize finally
.
...
* fixes the vec::from_elem regression caused by #8780
* added 5 benchmarks for allocating a 1KB ~[u8] and zeroing it
2013-12-12 07:07:45 +02:00
Erik Price
5731ca3078
Make 'self lifetime illegal.
...
Also remove all instances of 'self within the codebase.
This fixes #10889 .
2013-12-11 10:54:06 -08:00
Guillaume Pinot
44fc3c6ea8
add MutableVector::mut_split(self, pred) -> DoubleEndedIterator<&mut [T]>
...
This method is the mutable version of ImmutableVector::split. It is
a DoubleEndedIterator, making mut_rsplit irrelevent. The size_hint
method is not optimal because of #9629 .
At the same time, clarify *split* iterator doc.
2013-12-03 17:31:15 +01:00
Guillaume Pinot
25bb1a406c
rename MutableVector::mut_split(at) to MutableVector::mut_split_at(at)
2013-12-02 08:58:07 +01:00
Palmer Cox
2a8dfc3f22
Implement DoubleEndedIterator for MutChunkIter.
2013-11-30 19:54:28 -05:00
Palmer Cox
f2a01ea277
Implement mut_chunks() method for MutableVector trait.
...
mut_chunks() returns an iterator that produces mutable slices. This is the
mutable version of the existing chunks() method on the ImmutableVector trait.
2013-11-30 19:07:56 -05:00
Marvin Löbel
90f9eb3b1e
Removed a few macro-expanding-to-module workarounds
...
Also documented a few issues
2013-11-29 17:33:36 +01:00
bors
859c3baf64
auto merge of #10519 : nikomatsakis/rust/issue-8624-borrowck-overly-permissive, r=pnkfelix
...
See #8624 for details.
r? @pnkfelix
2013-11-28 03:51:32 -08:00
Patrick Walton
9521551b47
librustc: Fix merge fallout.
2013-11-26 11:04:39 -08:00
Patrick Walton
151b7ed52d
libstd: Fix Win32 and other bustage.
2013-11-26 08:25:27 -08:00
Patrick Walton
f571e46ddb
test: Remove non-procedure uses of do
from compiletest, libstd tests,
...
compile-fail tests, run-fail tests, and run-pass tests.
2013-11-26 08:25:27 -08:00
Patrick Walton
1eca34de7d
libstd: Remove all non-proc
uses of do
from libstd
2013-11-26 08:23:57 -08:00
Patrick Walton
9e610573ba
librustc: Remove remaining uses of &fn()
in favor of ||
.
2013-11-26 08:20:58 -08:00
Marvin Löbel
24b316a3b9
Removed unneccessary _iter
suffixes from various APIs
2013-11-26 10:02:26 +01:00
klutzy
87b166d94a
std: Remove unused attributes
...
This also enables two tests properly.
2013-11-26 13:24:11 +09:00
Niko Matsakis
ce44094bbb
Add [mut_]shift_ref/[mut_]pop_ref functions, which return a pointer to the first/last item in the slice and modify the slice to exclude the returned item. Useful when writing iterators over mutable references.
2013-11-25 06:41:26 -05:00
g3xzh
80dff18641
Add more benchmark tests to vec.rs
...
New benchmark tests in vec.rs:
`push`, `starts_with_same_vector`, `starts_with_single_element`,
`starts_with_diff_one_element_end`, `ends_with_same_vector`,
`ends_with_single_element`, `ends_with_diff_one_element_beginning` and
`contains_last_element`
2013-11-22 13:24:16 +02:00
Ziad Hatahet
248cb90dfa
std::ptr::read_ptr
now takes *T
instead of *mut T
...
Closes #10579
2013-11-21 11:31:58 -08:00
Patrick Walton
1946265e1a
libstd: Change all uses of &fn(A)->B
over to |A|->B
in libstd
2013-11-19 12:40:19 -08:00
Corey Richardson
a46b2b8e7a
vec: with_capacity: check for overflow
...
Fixes #10271
2013-11-11 06:09:28 -05:00
Daniel Micay
421c631570
add clone_from
and deep_clone_from
...
Closes #10240
2013-11-08 23:24:46 -05:00
Alex Crichton
4b770446b4
Register new snapshots
2013-11-06 20:24:36 -08:00
Niko Matsakis
3d1f3f4de0
Rename misleading contains_managed to owns_managed
2013-11-05 15:51:18 -05:00
Alex Crichton
daf5f5a4d1
Drop the '2' suffix from logging macros
...
Who doesn't like a massive renaming?
2013-10-22 08:09:56 -07:00