3296 Commits

Author SHA1 Message Date
blake2-ppc
8931ad9e52 std::str: Only check char boundary for end index in .slice_to() 2013-08-19 11:20:00 +02:00
blake2-ppc
f33a30e7e8 std::str: Correct docstrings for lack of null terminator in ~str and &str 2013-08-19 11:20:00 +02:00
blake2-ppc
595dd843d7 std::str: Use CharOffsetIterator in .find() and .rfind() 2013-08-19 11:20:00 +02:00
blake2-ppc
db3eb7291a std::str: Implement CharIterator separately
Let CharIterator be a separate type from CharOffsetIterator (so that
CharIterator can be cloned, for example).

Implement CharOffsetIterator by using the same technique as the method
subslice_offset.
2013-08-19 11:20:00 +02:00
blake2-ppc
8a5889d2a2 std::str: Add str::raw::slice_unchecked
Add a function like raw::slice_bytes, but it doesn't check slice
boundaries. For iterator use where we always know the begin, end indices
are in range.
2013-08-19 11:19:59 +02:00
blake2-ppc
3cb5b8dc18 std::str: Special case char_range_at_reverse so it is faster
Implement char_range_at_reverse similarly to char_range_at, instead of
re-using that method.
2013-08-19 11:19:59 +02:00
blake2-ppc
4043c70f23 std::str: Small fix for slice 2013-08-19 11:19:59 +02:00
blake2-ppc
548bdbaa29 std::str: Bench test for char iterators 2013-08-19 11:19:59 +02:00
bors
3e4f40ec5a auto merge of #8564 : alexcrichton/rust/ifmt+++, r=graydon
See discussion in #8489, but this selects option 3 by adding a `Default` trait to be implemented by various basic types.

Once this makes it into a snapshot I think it's about time to start overhauling all current use-cases of `fmt!` to move towards `ifmt!`. The goal is to replace `%X` with `{}` in 90% of situations, and this commit should enable that.
2013-08-19 01:42:05 -07:00
Kevin Ballard
ac3bc9cfcc Fix mod_floor() for uint primitive types 2013-08-19 01:01:11 -07:00
Kevin Ballard
8741770471 Update size_hint()s on std::iterator Iterators
Add size_hint() to a few Iterators that were missing it.

Update a couple of existing size_hint()s to use checked_add() instead of
saturating_add() for the upper bound.
2013-08-18 22:33:32 -07:00
Kevin Ballard
c64f96361e Implement .size_hint() on new vec iterators 2013-08-18 21:58:56 -07:00
bors
557ff049f0 auto merge of #8565 : bblum/rust/select-bugfix, r=brson
@brson grilled me about how this bugfix worked the first time around, and it occurred to me that it didn't in the case where the task is unwinding. Now it will.
2013-08-18 19:32:36 -07:00
Steven Fackler
b66cdb16fe Delete std::rt::io::net::http
It's an empty stub and as one of the comments notes, doesn't belong in
libstd.
2013-08-18 20:32:35 -04:00
bors
b26e11db86 auto merge of #8560 : kballard/rust/reserve-yield, r=pcwalton
Rename task::yield() to task::deschedule().

Fixes #8494.
2013-08-18 15:02:04 -07:00
bors
e185b049af auto merge of #8545 : blake2-ppc/rust/iterbytes, r=alexcrichton
Address issue #5257, for example these values all had the same hash value:

	("aaa", "bbb", "ccc")
	("aaab", "bb", "ccc")
	("aaabbb", "", "ccc")

IterBytes for &[A] now includes the length, before calling iter_bytes on
each element.

IterBytes for &str is now terminated by a byte that does not appear in
UTF-8. This way only one more byte is processed when hashing strings.
2013-08-18 12:41:59 -07:00
bors
88bd2155d7 auto merge of #8558 : kballard/rust/xorshift-seed, r=cmr
Fixes #8359.
2013-08-18 10:01:55 -07:00
blake2-ppc
bfa1331cd7 std:#️⃣ Add testcase for colliding hashes of tuples
Add a testcase that verifies that (s, t) and (u, v) don't collide even if
s + t == u + v (concatenation).
2013-08-18 18:39:47 +02:00
blake2-ppc
73fdacbac9 std::to_bytes: Implement IterBytes on 1- to 8-tuples 2013-08-18 18:39:47 +02:00
blake2-ppc
6066118b29 std::to_bytes: Delimit sequences &[A] and ~str when hashing
Address issue #5257, for example these values all had the same hash value:

	("aaa", "bbb", "ccc")
	("aaab", "bb", "ccc")
	("aaabbb", "", "ccc")

IterBytes for &[A] now includes the length, before calling iter_bytes on
each element.

IterBytes for &str is now terminated by a byte that does not appear in
UTF-8. This way only one more byte is processed when hashing strings.
2013-08-18 18:39:47 +02:00
bors
0a238288d3 auto merge of #8555 : chris-morgan/rust/time-clone, r=huonw
I need `Clone` for `Tm` for my latest work on [rust-http](https://github.com/chris-morgan/rust-http) (static typing for headers, and headers like `Date` are a time), so here it is.

@huonw recommended deriving DeepClone while I was at it.

I also had to implement `DeepClone` for `~str` to get a derived implementation of `DeepClone` for `Tm`; I did `@str` while I was at it, for consistency.
2013-08-18 07:21:58 -07:00
bors
3bc6858428 auto merge of #8551 : huonw/rust/speling, r=alexcrichton
(This doesn't add/remove `u`s or change `ize` to `ise`, or anything like that.)
2013-08-18 05:11:58 -07:00
Huon Wilson
6440343a6c More spelling corrections. 2013-08-18 08:28:04 +10:00
bors
cb8a231eb8 auto merge of #8433 : brson/rust/rm-more-oldrt-crud, r=brson
Just deleting more stuff.
2013-08-17 12:51:57 -07:00
Erick Tryzelaar
be86bc81a7 Fix warnings in tests 2013-08-17 08:41:35 -07:00
toddaaro
20213fcca4 A round of code cleaning for the primary scheduler code. Comments have been updated, a minor amount of support type restructing has happened, methods have been reordered, and some duplicate code has been purged. 2013-08-16 16:37:59 -07:00
toddaaro
f83835b0e7 Moved the logic for a pausible idle callback into a new type - PausibleIdleCallback and placed the appropriate signatures in rtio and implementation into uvio. 2013-08-16 16:37:09 -07:00
Brian Anderson
88d8baa76b std::rt: Fix a race in UvRemoteCallback's dtor that misses callbacks
Full description in comments.
2013-08-16 16:37:09 -07:00
Brian Anderson
bd382ee643 std::rt: Touch up idle logic 2013-08-16 16:37:09 -07:00
toddaaro
066ca17eaa an attempt at a singleton pausible idle callback for each scheduler. suffers from nondeterministic deadlock and also pending scheduler messages on scheduler shutdown. 2013-08-16 16:37:09 -07:00
Alex Crichton
22c7bbfd0c Delegate {} to Default instead of Poly
By using a separate trait this is overridable on a per-type basis and makes room
for the possibility of even more arguments passed in for the future.
2013-08-16 16:09:33 -07:00
Alex Crichton
109274426a Implement {:s} for ~str and @str as well 2013-08-16 16:09:33 -07:00
Kevin Ballard
418e1ebae6 Reserve 'yield' keyword
Rename task::yield() to task::deschedule().

Fixes #8494.
2013-08-16 13:26:50 -07:00
Brian Anderson
9c71f4f1e0 Remove the annihilate lang item 2013-08-16 13:24:24 -07:00
Kevin Ballard
e7b8524b3d Give XorShiftRng::new() a random seed
Fixes #8359.
2013-08-16 12:11:34 -07:00
bors
a1674b6150 auto merge of #8534 : huonw/rust/tls-key-macro, r=alexcrichton
This allows the internal implementation details of the TLS keys to be
changed without requiring the update of all the users. (Or, applying
changes that *have* to be applied for the keys to work correctly, e.g.
forcing LLVM to not merge these constants.)
2013-08-16 08:05:10 -07:00
bors
680eb71564 auto merge of #8532 : kballard/rust/cstr-cleanup, r=erickt
Implement interior null checking in `.to_c_str()`, among other changes.
2013-08-16 06:02:14 -07:00
Chris Morgan
14885dade4 Implement DeepClone for str types. 2013-08-16 20:17:02 +10:00
bors
72b50e729d auto merge of #8526 : blake2-ppc/rust/either-result, r=catamorphism
Retry of PR #8471

Replace the remaining functions marked for issue #8228 with similar functions that are iterator-based.

Change `either::{lefts, rights}` to be iterator-filtering instead of returning a vector.

Replace `map_vec`, `map_vec2`, `iter_vec2` in std::result with three functions:

* `result::collect` gathers `Iterator<Result<V, U>>` to `Result<~[V], U>`
* `result::fold` folds `Iterator<Result<T, E>>` to `Result<V, E>`
* `result::fold_` folds `Iterator<Result<T, E>>` to `Result<(), E>`
2013-08-16 01:56:16 -07:00
bors
92af0db0a3 auto merge of #8518 : catamorphism/rust/issue-8498-workaround, r=brson
r? @brson
2013-08-15 23:56:14 -07:00
Huon Wilson
72fd02d939 doc: convert remaining uses of core:: to std::. 2013-08-16 15:54:14 +10:00
Huon Wilson
abe94f9b4d doc: correct spelling in documentation. 2013-08-16 15:41:28 +10:00
Huon Wilson
3ad23552fb syntax: add a local_data_key macro that creates a key for access to the TLS.
This allows the internal implementation details of the TLS keys to be
changed without requiring the update of all the users. (Or, applying
changes that have to be applied for the keys to work correctly, e.g.
forcing LLVM to not merge these constants.)
2013-08-16 14:37:24 +10:00
Daniel Micay
486501963a vec: rm redundant is_empty implementations 2013-08-15 21:12:35 -04:00
Daniel Micay
fe047e07ba iterator: cleanup 2013-08-15 21:12:34 -04:00
Daniel Micay
45426c3b4c vec: rm obsolete zip and zip_slice
These are obsoleted by the generic iterator `zip` adaptor. Unlike
these, it does not clone the elements or allocate a new vector by
default.
2013-08-15 21:12:34 -04:00
Daniel Micay
1f89eb867a tuple: remove obsolete ExtendedTupleOps
replaced by iterators (generic composable `map` and `zip` adaptors)
2013-08-15 21:12:34 -04:00
Daniel Micay
af9ddd7563 kinds: update documentation 2013-08-15 21:12:34 -04:00
Daniel Micay
062747b9c9 ptr: inline the Clone implementation 2013-08-15 21:12:34 -04:00
bors
c4656cfd04 auto merge of #8485 : alexcrichton/rust/add-tests, r=catamorphism
Closes #3907
Closes #5493
Closes #4464
Closes #4759
Closes #5666
Closes #5884
Closes #5926
Closes #6318
Closes #6557
Closes #6898
Closes #6919
Closes #7222
2013-08-15 15:41:11 -07:00