Commit graph

6024 commits

Author SHA1 Message Date
Aaron Turon
7c152f870d Add Error impls to a few key error types 2014-11-02 15:31:52 -08:00
Aaron Turon
6815c2e8e8 Add error module with Error and FromError traits
As per [RFC 70](https://github.com/rust-lang/rfcs/blob/master/active/0070-error-chaining.md)

Closes #17747

Note that the `error` module must live in `std` in order to refer to `String`.

Note that, until multidispatch lands, the `FromError` trait cannot be
usefully implemented outside of the blanket impl given here.
2014-11-02 15:25:38 -08:00
Daniel Micay
fea985a0b5 bubble up out-of-memory errors from liballoc
This makes the low-level allocation API suitable for use cases where
out-of-memory conditions need to be handled.

Closes #18292

[breaking-change]
2014-11-01 19:23:20 -04:00
bors
39f90aead4 auto merge of #18474 : alexcrichton/rust/no-more-traits, r=aturon
As part of the collections reform RFC, this commit removes all collections
traits in favor of inherent methods on collections themselves. All methods
should continue to be available on all collections.

This is a breaking change with all of the collections traits being removed and
no longer being in the prelude. In order to update old code you should move the
trait implementations to inherent implementations directly on the type itself.

Note that some traits had default methods which will also need to be implemented
to maintain backwards compatibility.

[breaking-change]
cc #18424
2014-11-01 20:21:47 +00:00
Alex Crichton
21ac985af4 collections: Remove all collections traits
As part of the collections reform RFC, this commit removes all collections
traits in favor of inherent methods on collections themselves. All methods
should continue to be available on all collections.

This is a breaking change with all of the collections traits being removed and
no longer being in the prelude. In order to update old code you should move the
trait implementations to inherent implementations directly on the type itself.

Note that some traits had default methods which will also need to be implemented
to maintain backwards compatibility.

[breaking-change]
cc #18424
2014-11-01 11:37:04 -07:00
bors
0547a407aa auto merge of #18457 : japaric/rust/tocstr, r=alexcrichton
Methods that used to take `ToCStr` implementors by value, now take them by reference. In particular, this breaks some uses of `Command`:

``` rust
Command::new("foo");  // Still works
Command::new(path) -> Command::new(&path)
cmd.arg(string) -> cmd.arg(&string) or cmd.arg(string.as_slice())
```

[breaking-change]

---

It may be sensible to remove `impl ToCstr for String` since:
- We're getting `impl Deref<str> for String`, so `string.to_cstr()` would still work
- `Command` methods would still be able to use `cmd.arg(string[..])` instead of `cmd.arg(&string)`.

But, I'm leaving that up to the library stabilization process.

r? @aturon 
cc #16918
2014-11-01 11:21:47 +00:00
Jorge Aparicio
dd9dda7a1c DSTify ToCStr 2014-10-31 10:09:15 -05:00
Jorge Aparicio
1384a43db3 DSTify Hash
- The signature of the `*_equiv` methods of `HashMap` and similar structures
have changed, and now require one less level of indirection. Change your code
from:

```
hashmap.find_equiv(&"Hello");
hashmap.find_equiv(&&[0u8, 1, 2]);
```

to:

```
hashmap.find_equiv("Hello");
hashmap.find_equiv(&[0u8, 1, 2]);
```

- The generic parameter `T` of the `Hasher::hash<T>` method have become
`Sized?`. Downstream code must add `Sized?` to that method in their
implementations. For example:

```
impl Hasher<FnvState> for FnvHasher {
    fn hash<T: Hash<FnvState>>(&self, t: &T) -> u64 { /* .. */ }
}
```

must be changed to:

```
impl Hasher<FnvState> for FnvHasher {
    fn hash<Sized? T: Hash<FnvState>>(&self, t: &T) -> u64 { /* .. */ }
    //      ^^^^^^
}
```

[breaking-change]
2014-10-31 07:25:34 -05:00
Alex Crichton
6fcba8826f Test fixes and rebase conflicts 2014-10-30 17:37:56 -07:00
Alex Crichton
c10c163377 rollup merge of #18445 : alexcrichton/index-mut
Conflicts:
	src/libcollections/vec.rs
2014-10-30 17:37:55 -07:00
Alex Crichton
00975e041d rollup merge of #18398 : aturon/lint-conventions-2
Conflicts:
	src/libcollections/slice.rs
	src/libcore/failure.rs
	src/libsyntax/parse/token.rs
	src/test/debuginfo/basic-types-mut-globals.rs
	src/test/debuginfo/simple-struct.rs
	src/test/debuginfo/trait-pointers.rs
2014-10-30 17:37:22 -07:00
Alex Crichton
f3d72dc6a7 rollup merge of #18443 : alexcrichton/deref-vec-and-string 2014-10-30 17:36:49 -07:00
Alex Crichton
f2fe55b013 rollup merge of #18397 : aochagavia/ascii 2014-10-30 09:29:23 -07:00
Alex Crichton
735ad689d7 rollup merge of #18393 : aochagavia/prelude 2014-10-30 09:29:23 -07:00
Alex Crichton
1d356624a1 collections: Enable IndexMut for some collections
This commit enables implementations of IndexMut for a number of collections,
including Vec, RingBuf, SmallIntMap, TrieMap, TreeMap, and HashMap. At the same
time this deprecates the `get_mut` methods on vectors in favor of using the
indexing notation.

cc #18424
2014-10-30 08:54:30 -07:00
bors
abb3b9c505 auto merge of #18374 : steveklabnik/rust/gh18197, r=sfackler
Fixes #18197
2014-10-30 13:57:07 +00:00
Nick Cameron
dd2a1e3469 Change extensions traits to blanket impls 2014-10-30 15:51:56 +13:00
Nick Cameron
c48a1ab158 changes to tests 2014-10-30 15:51:56 +13:00
Nick Cameron
1d500cfd74 changes to libs 2014-10-30 15:51:55 +13:00
Alex Crichton
8e9f8f924c collections: impl Deref for Vec/String
This commit adds the following impls:

    impl<T> Deref<[T]> for Vec<T>
    impl<T> DerefMut<[T]> for Vec<T>
    impl Deref<str> for String

This commit also removes all duplicated inherent methods from vectors and
strings as implementations will now silently call through to the slice
implementation. Some breakage occurred at std and beneath due to inherent
methods removed in favor of those in the slice traits and std doesn't use its
own prelude,

cc #18424
2014-10-29 18:48:30 -07:00
bors
15dd90b647 auto merge of #18359 : 1-more/rust/feature, r=alexcrichton 2014-10-30 00:27:02 +00:00
Steve Klabnik
7828c3dd28 Rename fail! to panic!
https://github.com/rust-lang/rfcs/pull/221

The current terminology of "task failure" often causes problems when
writing or speaking about code. You often want to talk about the
possibility of an operation that returns a Result "failing", but cannot
because of the ambiguity with task failure. Instead, you have to speak
of "the failing case" or "when the operation does not succeed" or other
circumlocutions.

Likewise, we use a "Failure" header in rustdoc to describe when
operations may fail the task, but it would often be helpful to separate
out a section describing the "Err-producing" case.

We have been steadily moving away from task failure and toward Result as
an error-handling mechanism, so we should optimize our terminology
accordingly: Result-producing functions should be easy to describe.

To update your code, rename any call to `fail!` to `panic!` instead.
Assuming you have not created your own macro named `panic!`, this
will work on UNIX based systems:

    grep -lZR 'fail!' . | xargs -0 -l sed -i -e 's/fail!/panic!/g'

You can of course also do this by hand.

[breaking-change]
2014-10-29 11:43:07 -04:00
Steve Klabnik
72fb8f3688 Fix example for BufferedReader
Fixes #18197
2014-10-28 15:55:56 -04:00
Aaron Turon
e0ad0fcb95 Update code with new lint names 2014-10-28 08:54:21 -07:00
Adolfo Ochagavía
012cc6dd04 Remove unnecessary clone in ascii.rs 2014-10-28 16:44:30 +01:00
Adolfo Ochagavía
a33b7441db Add ptr::RawMutPtr to prelude
Closes https://github.com/rust-lang/rust/issues/18196
2014-10-28 15:56:10 +01:00
Vladimir Smola
9bf82fa7ff Fix the output of negative duration
Technically speaking, negative duration is not valid ISO 8601, but we need to
print it anyway. If `d` is a positive duration with the output `xxxxxxx`, then
the expected output of negative `-d` value is `-xxxxxxx`. I.e. the idea is to
print negative durations as positive with a leading minus sign.

Closes #18181.
2014-10-28 21:48:21 +07:00
Jorge Aparicio
94ddb51c9c DSTify [T]/str extension traits
This PR changes the signature of several methods from `foo(self, ...)` to
`foo(&self, ...)`/`foo(&mut self, ...)`, but there is no breakage of the usage
of these methods due to the autoref nature of `method.call()`s. This PR also
removes the lifetime parameter from some traits (`Trait<'a>` -> `Trait`). These
changes break any use of the extension traits for generic programming, but
those traits are not meant to be used for generic programming in the first
place. In the whole rust distribution there was only one misuse of a extension
trait as a bound, which got corrected (the bound was unnecessary and got
removed) as part of this PR.

[breaking-change]
2014-10-27 20:20:08 -05:00
Alex Crichton
a33d7617c5 Test fixes and rebase conflicts from rollup 2014-10-27 15:12:48 -07:00
Alex Crichton
6e9d5a6d9d rollup merge of #18366 : aochagavia/ascii 2014-10-27 15:12:48 -07:00
Alex Crichton
175d6a7435 rollup merge of #18332 : jbcrail/fix-comments 2014-10-27 15:12:30 -07:00
Alex Crichton
287df9e0eb rollup merge of #18329 : sfackler/memwriter-clear 2014-10-27 15:12:30 -07:00
Adolfo Ochagavía
b8c4eb3a4e Fix undefined behavior in std::ascii
Closes https://github.com/rust-lang/rust/issues/18314
2014-10-27 16:09:21 +01:00
bors
a93e9c20f2 auto merge of #18130 : mahkoh/rust/udp, r=alexcrichton
Closes #18111

Note that the non-empty part doesn't matter right now because of #18129.
2014-10-27 03:57:37 +00:00
Joseph Crail
30403204d6 Fix spelling mistakes in comments. 2014-10-25 23:11:17 -04:00
Steven Fackler
bed5a7d92a Add MemWriter::from_vec 2014-10-25 19:23:39 -07:00
Daniel Micay
2bc4d3ec23 get rid of libc_heap::{malloc_raw, realloc_raw}
The C standard library functions should be used directly. The quirky
NULL / zero-size allocation workaround is no longer necessary and was
adding an extra branch to the allocator code path in a build without
jemalloc. This is a small step towards liballoc being compatible with
handling OOM errors instead of aborting (#18292).

[breaking-change]
2014-10-25 14:12:19 -04:00
Julian Orth
d6dc01e797 Deprecate UdpStream 2014-10-25 09:11:47 +02:00
Julian Orth
8adfd02368 Make UdpStream block until the next non-empty msg. 2014-10-25 09:06:35 +02:00
bors
7d0cc44f87 auto merge of #18070 : alexcrichton/rust/spring-cleaning, r=aturon
This is a large spring-cleaning commit now that the 0.12.0 release has passed removing an amount of deprecated functionality. This removes a number of deprecated crates (all still available as cargo packages in the rust-lang organization) as well as a slew of deprecated functions. All `#[crate_id]` support has also been removed.

I tried to avoid anything that was recently deprecated, but I may have missed something! The major pain points of this commit is the fact that rustc/syntax have `#[allow(deprecated)]`, but I've removed that annotation so moving forward they should be cleaned up as we go.
2014-10-20 16:07:43 +00:00
bors
ddfe24d641 auto merge of #18174 : huonw/rust/fix-sqrt, r=alexcrichton
Closes #9987.
2014-10-20 10:17:09 +00:00
Huon Wilson
a1d5cd204d Handle negative numbers in sqrt properly.
Closes #9987.
2014-10-20 21:10:13 +11:00
bors
045bc283ec auto merge of #18108 : mahkoh/rust/buffered_reader, r=alexcrichton
This optimizes `read` for the case in which the number of bytes
requested is larger than the internal buffer. Note that the first
comparison occurs again right afterwards and should thus be free. The
second comparison occurs only in the cold branch.
2014-10-20 03:27:12 +00:00
Julian Orth
3839696529 Optimize BufferedReader::read for large buffers.
This optimizes `read` for the case in which the number of bytes
requested is larger than the internal buffer. Note that the first
comparison occurs again right afterwards and should thus be free. The
second comparison occurs only in the cold branch.
2014-10-20 01:47:33 +02:00
Alex Crichton
9d5d97b55d Remove a large amount of deprecated functionality
Spring cleaning is here! In the Fall! This commit removes quite a large amount
of deprecated functionality from the standard libraries. I tried to ensure that
only old deprecated functionality was removed.

This is removing lots and lots of deprecated features, so this is a breaking
change. Please consult the deprecation messages of the deleted code to see how
to migrate code forward if it still needs migration.

[breaking-change]
2014-10-19 12:59:40 -07:00
bors
c7c342d10c auto merge of #18103 : pcwalton/rust/bitflags-inline, r=thestinger
Servo really wants this.

r? @nick29581
2014-10-18 10:17:14 +00:00
bors
97bf93e405 auto merge of #18093 : steveklabnik/rust/remove_gc_reference, r=alexcrichton 2014-10-17 14:17:34 +00:00
bors
1600e0b93c auto merge of #17998 : rapha/rust/master, r=alexcrichton 2014-10-17 00:17:25 +00:00
Patrick Walton
416e6ecf8c libstd: Inline more methods on bitflags.
Servo really wants this.
2014-10-16 15:25:46 -07:00
bors
9d5fa7ac3b auto merge of #17947 : lukemetz/rust/master, r=aturon
AsciiStr::to_lower is now AsciiStr::to_lowercase and AsciiStr::to_upper is AsciiStr::to_uppercase to match Ascii trait.

Part of issue #17790.

This is my first pull request so let me know if anything is incorrect.

Thanks!

[breaking-changes]
2014-10-16 20:22:26 +00:00