nham
25acfde398
collections: Implement Eq for DList, RingBuf, TreeMap, TreeSet
2014-08-01 16:05:03 -04:00
Patrick Walton
5b85c8cbe7
librustc: Forbid pattern bindings after @
s, for memory safety.
...
This is an alternative to upgrading the way rvalues are handled in the
borrow check. Making rvalues handled more like lvalues in the borrow
check caused numerous problems related to double mutable borrows and
rvalue scopes. Rather than come up with more borrow check rules to try
to solve these problems, I decided to just forbid pattern bindings after
`@`. This affected fewer than 10 lines of code in the compiler and
libraries.
This breaks code like:
match x {
y @ z => { ... }
}
match a {
b @ Some(c) => { ... }
}
Change this code to use nested `match` or `let` expressions. For
example:
match x {
y => {
let z = y;
...
}
}
match a {
Some(c) => {
let b = Some(c);
...
}
}
Closes #14587 .
[breaking-change]
2014-08-01 08:45:22 -07:00
bors
f681420624
auto merge of #15915 : erickt/rust/master, r=alexcrichton
...
std: rename MemWriter to SeekableMemWriter, add seekless MemWriter
Not all users of MemWriter need to seek, but having MemWriter seekable adds between 3-29% in overhead in certain circumstances. This fixes that performance gap by making a non-seekable MemWriter, and creating a new SeekableMemWriter for those circumstances when that functionality is actually needed.
```
test io::mem::test::bench_buf_reader ... bench: 682 ns/iter (+/- 85)
test io::mem::test::bench_buf_writer ... bench: 580 ns/iter (+/- 57)
test io::mem::test::bench_mem_reader ... bench: 793 ns/iter (+/- 99)
test io::mem::test::bench_mem_writer_001_0000 ... bench: 48 ns/iter (+/- 27)
test io::mem::test::bench_mem_writer_001_0010 ... bench: 65 ns/iter (+/- 27) = 153 MB/s
test io::mem::test::bench_mem_writer_001_0100 ... bench: 132 ns/iter (+/- 12) = 757 MB/s
test io::mem::test::bench_mem_writer_001_1000 ... bench: 802 ns/iter (+/- 151) = 1246 MB/s
test io::mem::test::bench_mem_writer_100_0000 ... bench: 481 ns/iter (+/- 28)
test io::mem::test::bench_mem_writer_100_0010 ... bench: 1957 ns/iter (+/- 126) = 510 MB/s
test io::mem::test::bench_mem_writer_100_0100 ... bench: 8222 ns/iter (+/- 434) = 1216 MB/s
test io::mem::test::bench_mem_writer_100_1000 ... bench: 82496 ns/iter (+/- 11191) = 1212 MB/s
test io::mem::test::bench_seekable_mem_writer_001_0000 ... bench: 48 ns/iter (+/- 2)
test io::mem::test::bench_seekable_mem_writer_001_0010 ... bench: 64 ns/iter (+/- 2) = 156 MB/s
test io::mem::test::bench_seekable_mem_writer_001_0100 ... bench: 129 ns/iter (+/- 7) = 775 MB/s
test io::mem::test::bench_seekable_mem_writer_001_1000 ... bench: 801 ns/iter (+/- 159) = 1248 MB/s
test io::mem::test::bench_seekable_mem_writer_100_0000 ... bench: 711 ns/iter (+/- 51)
test io::mem::test::bench_seekable_mem_writer_100_0010 ... bench: 2532 ns/iter (+/- 227) = 394 MB/s
test io::mem::test::bench_seekable_mem_writer_100_0100 ... bench: 8962 ns/iter (+/- 947) = 1115 MB/s
test io::mem::test::bench_seekable_mem_writer_100_1000 ... bench: 85086 ns/iter (+/- 11555) = 1175 MB/s
```
2014-07-30 14:41:18 +00:00
Erick Tryzelaar
a011b2273e
Fix a whitespace typo
2014-07-29 15:50:44 -07:00
nham
f7bcb736ad
Implement Hash for DList
2014-07-29 15:44:37 -07:00
donkopotamus
57fef0f708
Fix documentation error in MutableVectorAllocating::move_from
...
Correct `str` to `src`
2014-07-29 15:44:05 -07:00
bors
7375f4d842
auto merge of #16038 : nham/rust/collections_partialord, r=alexcrichton
...
cc #15294
2014-07-29 07:56:41 +00:00
bors
f653d9f9bf
auto merge of #16033 : nham/rust/hash_tuple_impl, r=alexcrichton
...
Previously the implementation of Hash was limited to tuples of up to arity 8. This increases it to tuples of up to arity 12.
Also, the implementation macro for `Hash` used to expand to something like this:
impl Hash for (a7,)
impl Hash for (a6, a7)
impl Hash for (a5, a6, a7)
...
This style is inconsistent with the implementations in core::tuple, which look like this:
impl Trait for (A,)
impl Trait for (A, B)
impl Trait for (A, B, C)
...
This is perhaps a minor point, but it does mean the documentation pages are inconsistent. Compare the tuple implementations in the documentation for [Hash](http://static.rust-lang.org/doc/master/std/hash/trait.Hash.html ) and [PartialOrd](http://static.rust-lang.org/doc/master/core/cmp/trait.PartialOrd.html )
This changes the Hash implementation to be consistent with `core::tuple`.
2014-07-29 04:26:42 +00:00
bors
9e250109f9
auto merge of #16032 : treeman/rust/doc-treecollection, r=alexcrichton
2014-07-29 02:41:41 +00:00
bors
b2bd998607
auto merge of #16027 : treeman/rust/doc-string, r=alexcrichton
2014-07-28 22:36:39 +00:00
Jonas Hietala
3f56846460
doc: Method examples for String
...
Reword comments on unsafe methods regarding UTF-8.
2014-07-28 17:03:12 +02:00
nham
8ebd58cedf
Implement Ord for TrieMap/TrieSet/SmallIntMap/Bitv/BitvSet
2014-07-28 02:53:44 -04:00
nham
935c88ce1c
Implement PartialOrd for Bitv and BitvSet
2014-07-28 00:28:49 -04:00
nham
220f8f6dcb
Implement PartialOrd for SmallIntMap
2014-07-28 00:00:29 -04:00
nham
16acc10bf9
Implement PartialOrd for TrieMap and TrieSet
2014-07-27 23:51:28 -04:00
bors
70972832b3
auto merge of #16020 : nham/rust/ringbuf_hash_ord, r=alexcrichton
...
cc #15294
2014-07-27 19:06:16 +00:00
nham
e7b41caba8
Implement Hash for tuples of up to arity 12. Also change the style to be consistent with core::tuple
2014-07-27 14:41:33 -04:00
Jonas Hietala
58d3f109f8
doc: Small rewording.
2014-07-27 20:02:06 +02:00
nham
9fa4424b71
Hash the length of the RingBuf before hashing elements
2014-07-27 12:37:32 -04:00
Jonas Hietala
53c639184c
doc: Main example for TreeMap.
2014-07-27 18:19:04 +02:00
Jonas Hietala
8c34a97b37
doc: TreeMap methods with examples.
...
Small corrections for TreeSet examples.
2014-07-27 17:44:07 +02:00
Jonas Hietala
034ef079ef
doc: TreeSet methods and main example.
2014-07-27 17:04:44 +02:00
bors
d114ddac03
auto merge of #15963 : nham/rust/moar_15294, r=alexcrichton
...
Implements PartialEq/Eq/Clone/Hash/FromIterator/Extendable for SmallIntMap and Clone/Show for TrieMap/TrieSet. cc #15294
2014-07-27 06:16:14 +00:00
nham
6361577808
Implement PartialOrd for RingBuf
2014-07-26 23:18:56 -04:00
nham
1cfa6569f9
Implement Hash for RingBuf
2014-07-26 22:33:47 -04:00
nham
fadbc0b88b
Manually implement Hash for SmallIntMap
2014-07-26 18:47:33 -04:00
bors
ecce58c6fd
auto merge of #15762 : nham/rust/ringbuf_docs, r=alexcrichton
...
This adds examples for get(), get_mut(), swap(), iter() and mut_iter()
2014-07-26 19:16:16 +00:00
nham
ebe8097128
Add examples for RingBuf methods get, get_mut, iter, mut_iter
2014-07-26 13:42:55 -04:00
nham
3f1c37e96d
Small fixes for tests
2014-07-26 12:06:52 -04:00
nham
b2e81d1618
Fix a typo in SmallIntMap documentation
2014-07-25 21:40:47 -04:00
nham
1e997d62b7
Implement PartialEq/Eq/Clone/Hash/FromIterator/Extendable for SmallIntMap and Show/Clone for TrieMap and TrieSet
2014-07-25 21:34:01 -04:00
nham
74b1aed0ec
Add methods for obtaining iterators over the keys and values of a TrieMap
2014-07-25 01:14:49 -04:00
nham
0b339e09ab
Add methods for obtaining iterators over the keys and values of a SmallIntMap
2014-07-25 00:48:05 -04:00
nham
18f7b8f201
Add methods for obtaining iterators over the keys and values of a TreeMap
2014-07-25 00:32:42 -04:00
bors
7f2e63ec3f
auto merge of #15945 : treeman/rust/doc-smallint-update, r=alexcrichton
...
Forgot two methods, but @alexcrichton was a bit too quick to accept #15943 , so I made a new PR.
2014-07-24 22:51:10 +00:00
Jonas Hietala
222b780e7a
Document update and update_with_key in SmallIntMap.
...
Move update above for better docs progression.
2014-07-24 16:30:29 +02:00
Jonas Hietala
dff14069c9
Document SmallIntMap with examples.
2014-07-24 07:26:33 -07:00
Jonas Hietala
d93e53e70e
Format documentation for SmallIntMap.
2014-07-24 07:26:32 -07:00
Jonas Hietala
3685945ec1
Main examples for TrieSet and TrieMap.
2014-07-24 07:26:31 -07:00
Jonas Hietala
a524928951
Document TrieSet and TrieMap methods.
2014-07-24 07:26:31 -07:00
Adolfo Ochagavía
8836048c76
Fix deprecation warning in deque.rs
2014-07-24 07:25:48 -07:00
Adolfo Ochagavía
75a0062d88
Add string::raw::from_buf
2014-07-24 07:25:43 -07:00
Adolfo Ochagavía
0fe894e49b
Deprecated String::from_raw_parts
...
Replaced by `string::raw::from_parts`
[breaking-change]
2014-07-24 07:25:43 -07:00
Adolfo Ochagavía
6e509d3462
Deprecated str::raw::from_buf_len
...
Replaced by `string::raw::from_buf_len`
[breaking-change]
2014-07-24 07:25:43 -07:00
Adolfo Ochagavía
feeae27a56
Deprecated str::raw::from_byte
...
Use `string:raw::from_utf8` instead
[breaking-change]
2014-07-24 07:25:43 -07:00
Adolfo Ochagavía
9ec19373af
Deprecated str::raw::from_utf8_owned
...
Replaced by `string::raw::from_utf8`
[breaking-change]
2014-07-24 07:25:43 -07:00
Adolfo Ochagavía
eacc5d779f
Deprecated str::raw::from_c_str
...
Use `string::raw::from_buf` instead
[breaking-change]
2014-07-24 07:25:43 -07:00
Adolfo Ochagavía
ba707fb3a0
Remove OwnedStr trait
...
This trait was only implemented by `String`. It provided the methods
`into_bytes` and `append`, both of which **are already implemented as normal
methods** of `String` (not as trait methods). This change improves the
consistency of strings.
This shouldn't break any code, except if somebody has implemented
`OwnedStr` for a user-defined type.
2014-07-24 07:25:43 -07:00
Jonas Hietala
571692c0ab
Document PriorityQueue.
2014-07-24 11:41:23 +02:00
Jonas Hietala
87ef2f390b
Move contructors to the top of PriorityQueue.
2014-07-24 11:40:22 +02:00