Commit Graph

5557 Commits

Author SHA1 Message Date
Manish Goregaokar
1d59b91ed4 Rollup merge of #32741 - tbu-:pr_remove_fixme_12808, r=bluss
Remove strange names created by lack of privacy-conscious name lookup

The fixed issue that allowed this was #12808.
2016-04-07 23:26:19 +05:30
Manish Goregaokar
2a88ca4405 Rollup merge of #32757 - taralx:patch-1, r=brson
Fix typos in atomic compare_exchange.

Failure ordering can't be Release, not (not) Acquire. Seems like a typo copy-pasted all over.
2016-04-07 20:22:43 +05:30
Manish Goregaokar
684e2aace5 Rollup merge of #32699 - bluss:slice-memcmp, r=alexcrichton
Specialize equality for [T] and comparison for [u8] to use memcmp when possible

Specialize equality for [T] and comparison for [u8] to use memcmp when possible

Where T is a type that can be compared for equality bytewise, we can use
memcmp. We can also use memcmp for PartialOrd, Ord for [u8].

Use specialization to call memcmp in PartialEq for slices for certain element types. This PR does not change the user visible API since the implementation uses an intermediate trait. See commit messages for more information.

The memcmp signature was changed from `*const i8` to `*const u8` which is in line with how the memcmp function is defined in C (taking const void * arguments, interpreting the values as unsigned bytes for purposes of the comparison).
2016-04-07 20:22:41 +05:30
Ulrik Sverdrup
a6c27be0b1 slice: Use doc(hidden) on private traits
This should avoid the trait impls showing up in rustdoc.
2016-04-06 12:19:19 +02:00
Tshepang Lekhonkhobe
922e666820 avoid "==" in assert! when one of the values is a bool 2016-04-06 06:24:19 +02:00
JP Sugarbroad
4883824dc5 Fix typos in atomic compare_exchange. 2016-04-05 17:08:23 -07:00
Ulrik Sverdrup
5d56e1daed Specialize equality for [T] and comparison for [u8]
Where T is a type that can be compared for equality bytewise, we can use
memcmp. We can also use memcmp for PartialOrd, Ord for [u8] and by
extension &str.

This is an improvement for example for the comparison [u8] == [u8] that
used to emit a loop that compared the slices byte by byte.

One worry here could be that this introduces function calls to memcmp
in contexts where it should really inline the comparison or even
optimize it out, but llvm takes care of recognizing memcmp specifically.
2016-04-05 14:06:20 +02:00
Tobias Bucher
0936b5885d Remove strange names created by lack of privacy-conscious name lookup
The fixed issue that allowed this was #12808.
2016-04-05 11:41:48 +02:00
bors
9c2186d4d7 Auto merge of #32672 - ollie27:patch-5, r=alexcrichton
Fix a couple of dead links on core::num::ParseFloatError docs
2016-04-03 12:11:57 -07:00
Oliver Middleton
564ec1ae40 Fix a couple of dead links on core::num::ParseFloatError docs 2016-04-01 23:46:58 +01:00
Manish Goregaokar
cf0a01a161 Rollup merge of #32652 - VFLashM:refcell_ref_coercion, r=alexcrichton
Added missing refcell ref/refmut coercions to unsized

Ref/RefMut should be coercible to unsized.
This commit adds a unit test and two missing CoerceUnsized implementations.
2016-04-02 01:23:23 +05:30
Manish Goregaokar
c2fe137823 Rollup merge of #32642 - Amanieu:doc_fixes, r=apasel422
Fix formatting in the documentation for AtomicIsize::compare_exchange_weak
2016-04-01 18:44:49 +05:30
bors
a2f0cc6b0c Auto merge of #32550 - tbu-:pr_ref_cell_as_unsafe_cell, r=alexcrichton
Remove `unsafe` qualifier from `RefCell::as_unsafe_cell`

This method is no longer unsafe because the field of `UnsafeCell` is no
longer public.
2016-03-31 17:52:25 -07:00
Валерий Лашманов
33db2d65ff added missing refcell ref/refmut coercions to unsized 2016-03-31 10:11:59 -04:00
Amanieu d'Antras
e72c8fb754 Fix formatting in the documentation for AtomicIsize::compare_exchange_weak 2016-03-31 13:14:25 +01:00
Steve Klabnik
9f403abba2 Rollup merge of #32580 - durka:patch-17, r=steveklabnik
verb agreement in core::convert docs
2016-03-30 10:16:54 -07:00
Alex Burka
0af3e70842 verb agreement in core::convert docs 2016-03-29 12:23:09 -04:00
bors
641204a408 Auto merge of #32564 - frewsxcv:patch-27, r=alexcrichton
Prefer HTTPS when linking to 131002.net.
2016-03-29 03:36:50 -07:00
bors
21a4d8098f Auto merge of #32438 - kamalmarhubi:intoiterator-example, r=steveklabnik
style: Use `iter` for IntoIterator parameter names

This commit standardizes the codebase on `iter` for parameters with
IntoIterator bounds.

Previously about 40% of IntoIterator parameters were named `iterable`,
with most of the rest being named `iter`. There was a single place where
it was named `iterator`.
2016-03-28 23:06:09 -07:00
bors
cad964a626 Auto merge of #32461 - mitaa:rdoc-anchors, r=alexcrichton
rustdoc: Correct anchor for links to associated trait items

fixes #28478

r? @alexcrichton
2016-03-28 18:34:50 -07:00
Corey Farwell
3bc9157240 Prefer HTTPS when linking to 131002.net. 2016-03-28 18:08:00 -04:00
Guillaume Gomez
5b08ab50f7 Add doc examples on pointer types 2016-03-28 21:05:39 +02:00
Kamal Marhubi
93569acdbe style: Use iter for IntoIterator parameter names
This commit standardizes the codebase on `iter` for parameters with
IntoIterator bounds.

Previously about 40% of IntoIterator parameters were named `iterable`,
with most of the rest being named `iter`. There was a single place where
it was named `iterator`.
2016-03-28 13:59:38 -04:00
Tobias Bucher
4ddbd6b5b0 Remove unsafe qualifier from RefCell::as_unsafe_cell
This method is no longer unsafe because the field of `UnsafeCell` is no
longer public.
2016-03-28 15:29:15 +02:00
mitaa
6a76872d71 Extend linkchecker with anchor checking
This adds checks to ensure that:
* link anchors refer to existing id's on the target page
* id's are unique within an html document
* page redirects are valid
2016-03-27 00:21:00 +01:00
Manish Goregaokar
671027817c Rollup merge of #32456 - bluss:str-zero, r=alexcrichton
Hardcode accepting 0 as a valid str char boundary

If we check explicitly for index == 0, that removes the need to read the
byte at index 0, so it avoids a trip to the string's memory, and it
optimizes out the slicing index' bounds check whenever it is (a constant) zero.
2016-03-26 13:42:04 +05:30
bors
40deb279a8 Auto merge of #32396 - nodakai:range-contains, r=alexcrichton
Add core::ops::Range*::contains() as per rust-lang/rust#32311
2016-03-24 19:38:43 -07:00
Steve Klabnik
b2dfb7c0a2 Rollup merge of #32464 - GuillaumeGomez:patch-6, r=steveklabnik
Improve some Option code example

Part of #29366.

r? @steveklabnik
2016-03-24 10:37:24 -04:00
Steve Klabnik
7a38ac8e87 Rollup merge of #32416 - GuillaumeGomez:patch-3, r=steveklabnik
Add doc example to clone trait

Fixes #29346.

r? @steveklabnik
2016-03-24 10:37:23 -04:00
Guillaume Gomez
b922d1a405 Improve some Option code example 2016-03-24 13:24:39 +01:00
NODA, Kai
a21c5f267a Add core::ops::Range*::contains() as per rust-lang/rust#32311
Signed-off-by: NODA, Kai <nodakai@gmail.com>
2016-03-24 08:57:45 +08:00
Ulrik Sverdrup
f621193e5e Accept 0 as a valid str char boundary
Index 0 must be a valid char boundary (invariant of str that it contains
valid UTF-8 data).

If we check explicitly for index == 0, that removes the need to read the
byte at index 0, so it avoids a trip to the string's memory, and it
optimizes out the slicing index' bounds check whenever it is zero.

With this change, the following examples all change from having a read of
the byte at 0 and a branch to possibly panicing, to having the bounds
checking optimized away.

```rust
pub fn split(s: &str) -> (&str, &str) {
    s.split_at(0)
}

pub fn both(s: &str) -> &str {
    &s[0..s.len()]
}

pub fn first(s: &str) -> &str {
    &s[..0]
}

pub fn last(s: &str) -> &str {
    &s[0..]
}
```
2016-03-24 01:25:59 +01:00
Ulrik Sverdrup
80e7a1be35 Mark str::split_at inline 2016-03-23 22:03:06 +01:00
Jorge Aparicio
aa7fe93d4a sprinkle feature gates here and there 2016-03-22 22:02:47 -05:00
Jorge Aparicio
0f02309e4b try! -> ?
Automated conversion using the untry tool [1] and the following command:

```
$ find -name '*.rs' -type f | xargs untry
```

at the root of the Rust repo.

[1]: https://github.com/japaric/untry
2016-03-22 22:01:37 -05:00
Alex Crichton
48d5fe9ec5 std: Change encode_utf{8,16} to return iterators
Currently these have non-traditional APIs which take a buffer and report how
much was filled in, but they're not necessarily ergonomic to use. Returning an
iterator which *also* exposes an underlying slice shouldn't result in any
performance loss as it's just a lazy version of the same implementation, and
it's also much more ergonomic!

cc #27784
2016-03-22 10:25:30 -07:00
Guillaume Gomez
b3aa35e756 Add doc example to clone trait 2016-03-22 18:18:01 +01:00
Steve Klabnik
4ed70c2bc8 Rollup merge of #32322 - GuillaumeGomez:cmp_doc, r=steveklabnik
Add doc examples

Fixes #29347

r? @steveklabnik
2016-03-21 11:46:52 -04:00
bors
7ec8f5c369 Auto merge of #32054 - seanmonstar:impl-debug-core, r=alexcrichton
libcore: add Debug implementations to most missing types

Also adds `#![deny(missing_debug_implementations)]` to the core crate.

cc #31869
2016-03-21 00:07:33 -07:00
Eduard Burtescu
ec84ab0e0f Update snapshots to 2016-03-18 (235d774). 2016-03-20 22:37:35 +02:00
Sean McArthur
e0945937c4 libcore: add Debug implementations to most missing types 2016-03-20 10:04:55 -07:00
bors
8eeb5062d1 Auto merge of #32244 - Amanieu:compare_exchange_result, r=alexcrichton
Change compare_exchange to return a Result<T, T>

As per the discussion in #31767

I also changed the feature name from `extended_compare_and_swap` to `compare_exchange`.

r? @alexcrichton
2016-03-19 12:25:34 -07:00
Amanieu d'Antras
421fed188c Change compare_exchange to return a Result<T, T> 2016-03-19 11:44:38 +00:00
Ulrik Sverdrup
2dbac1fb8e Add intrinsics for float arithmetic with fast flag enabled
`fast` a.k.a UnsafeAlgebra is the flag for enabling all "unsafe"
(according to llvm) float optimizations.

See LangRef for more information http://llvm.org/docs/LangRef.html#fast-math-flags

Providing these operations with less precise associativity rules (for
example) is useful to numerical applications.

For example, the summation loop:

    let sum = 0.;
    for element in data {
        sum += *element;
    }

Using the default floating point semantics, this loop expresses the
floats must be added in a sequence, one after another. This constraint
is usually completely unintended, and it means that no autovectorization
is possible.
2016-03-18 17:31:41 +01:00
Guillaume Gomez
3aac461d40 Add doc examples 2016-03-18 15:47:33 +01:00
Eduard Burtescu
473f804491 Add #[rustc_no_mir] to make tests pass with -Z orbit. 2016-03-17 22:48:07 +02:00
Alex Crichton
b53764c73b std: Clean out deprecated APIs
Removes all unstable and deprecated APIs prior to the 1.8 release. All APIs that
are deprecated in the 1.8 release are sticking around for the rest of this
cycle.

Some notable changes are:

* The `dynamic_lib` module was moved into `rustc_back` as the compiler still
  relies on a few bits and pieces.
* The `DebugTuple` formatter now special-cases an empty struct name with only
  one field to append a trailing comma.
2016-03-12 12:31:13 -08:00
Alex Crichton
083db64d90 std: Add a tracking issue for Peekable::is_empty
The listed tracking issue was hooked up to the wrong location by accident.
2016-03-11 22:09:58 -08:00
Alex Crichton
aed7ddae8e core: Make a new tracking issue for prelude traits
The referenced issues here were both closed, so hook up a new issue which tracks
specifically the prelude traits being unstable.
2016-03-11 22:09:58 -08:00
Alex Crichton
a38bf6e23d core: Mark Wrapping impls as stable
These are all insta-stable anyway, so just properly tag them.
2016-03-11 22:09:58 -08:00