Commit graph

628 commits

Author SHA1 Message Date
Manish Goregaokar
7c581b08fa
Rollup merge of #48738 - Songbird0:parseinterror_potential_cause, r=joshtriplett
Add a potential cause raising `ParseIntError`.

Initially, I wanted to add it directly to the documentation of `str. parse()` method, I finally found that it was more relevant (I hope so?) to directly document the structure in question. I've added a scenario, in which we could all get caught at least once, to make it easier to diagnose the problem when parsing integers.
2018-03-08 11:25:58 -08:00
Amanieu d'Antras
24fb4b7669 Add reverse_bits to integer types 2018-03-06 03:31:53 +00:00
Songbird0
6d71aa47fb
Fix spelling error for whitespaces. 2018-03-05 14:33:37 +01:00
Songbird0
ef1aae1cc2
Modify wording and remove useless whitespaces. 2018-03-05 03:57:33 +01:00
Songbird0
247fc38aeb
Tidy error: add a new line
The error was:

```
[00:05:25] tidy error: /checkout/src/libcore/num/mod.rs:3848: trailing whitespace
[00:05:25] tidy error: /checkout/src/libcore/num/mod.rs:3851: line longer than 100 chars
[00:05:25] tidy error: /checkout/src/libcore/num/mod.rs:3851: trailing whitespace
[00:05:26] some tidy checks failed
```
The line was truncated to 92 characters.
2018-03-04 22:18:42 +01:00
Songbird0
c68440cad4
Add a potential cause raising ParseIntError.
Initially, I wanted to add it directly to the documentation of `str. parse()' method, I finally found that it was more relevant (I hope so?) to directly document the structure in question. I've added a scenario, in which we could all get caught at least once, to make it easier to diagnose the problem when parsing integers.
2018-03-04 21:59:53 +01:00
kennytm
85d7d0bf56
Rollup merge of #48321 - milesand:no_panic_pow, r=alexcrichton
Add non-panicking variants of pow for integer types

Currently, calling pow may panic in case of overflow, and the function does not have non-panicking counterparts. Thus, it would be beneficial to add those in.

Closes #48291.
Relevant tracking issue: #48320
2018-02-28 19:15:28 +08:00
kennytm
0652af21b5
Rollup merge of #48235 - varkor:parse-float-lonely-exponent, r=alexcrichton
Make ".e0" not parse as 0.0

This forces floats to have either a digit before the separating point, or after. Thus `".e0"` is invalid like `"."`, when using `parse()`. Fixes #40654. As mentioned in the issue, this is technically a breaking change... but clearly incorrect behaviour at present.
2018-02-25 21:36:46 +08:00
Nathan Ringo
64236092e5
Fixes docs for ASCII functions to no longer claim U+0021 is '@'. 2018-02-24 23:48:51 -06:00
Hidehito Yabuuchi
7e51e7ddd6 Take 2^5 as examples in document of pow() (fixes #48396)
Current document takes 2^4, which is equal to 4^2.
This example is not very helpful for those unfamiliar with math words in English and thus rely on example codes.
2018-02-21 22:34:45 +09:00
varkor
c0e87f13a4 Make ".e0" not parse as 0.0
This forces floats to have either a digit before the separating point, or after. Thus ".e0" is invalid like ".", when using `parse()`.
2018-02-19 14:53:30 +00:00
Jewoo Lee
b31ff95ae6 Add non-panicking variants of pow to all integer types
Currently, calling pow may panic in case of overflow, and the function
does not have non-panicking counterparts. Thus, it would be beneficial
to add those in.
2018-02-19 10:34:43 +09:00
Guillaume Gomez
6db06f593b
Rollup merge of #48152 - antoyo:primitive-docs-relevant, r=QuietMisdreavus
Primitive docs relevant

This fixes the documentation to show the right types in the examples for many integer methods.

I need to check if the result is correct before we merge.
2018-02-17 14:45:21 +01:00
Guillaume Gomez
a58409dd91 Notify users that this example is shared through integer types 2018-02-16 16:32:11 +01:00
Guillaume Gomez
9a30673d2b Add missing feature 2018-02-14 01:34:30 +01:00
Antoni Boucher
146b81c2c6 Fix tidy errors 2018-02-12 08:07:10 -05:00
Antoni Boucher
56e15de9f9 Make primitive types docs relevant (unsigned) 2018-02-11 21:53:30 -05:00
Guillaume Gomez
9931583468 Make primitive types docs relevant 2018-02-11 21:53:30 -05:00
Oliver Middleton
45d5a420ad Correct a few stability attributes 2018-02-10 21:20:42 +00:00
varkor
e34c31bf02 Use constant for 180/π in to_degrees
The current `f32|f64.to_degrees` implementation uses a division to calculate 180/π, which causes a loss of precision. Using a constant is still not perfect (implementing a maximally-precise algorithm would come with a high performance cost), but improves precision with a minimal change.
2018-02-01 18:35:51 +00:00
bors
a538fe7ce7 Auto merge of #46931 - clarcharr:float_bits_core, r=alexcrichton
Expose float from_bits and to_bits in libcore.

These methods have no dependencies on libm and thus should be offered in libcore.
2018-01-24 03:02:15 +00:00
kennytm
d9d5c667d8 Rollup merge of #46947 - tspiteri:checked-div-rem-none, r=frewsxcv
doc: improve None condition doc for `checked_div` and `checked_rem`

This commit improves the condition mentioned in the docs for which `checked_div` and `checked_rem` return `None`.

For signed division, the commit changes "the operation results in overflow" to "the division results in overflow", otherwise there is room for misinterpretation for `checked_rem`: Without considering overflow, `MIN % -1` would be simply zero, allowing the misinterpretation that "the operation" does not result in overflow in this case. This ambiguity is removed using "when the division results in overflow".

For unsigned division, the condition for `None` should be simply when `rhs == 0`, as no other overflow is possible.
2018-01-07 02:36:01 +08:00
varkor
fba16d3f0b Optimise min/max
Swapping the conditions generates more efficient x86 assembly. See
https://github.com/rust-lang/rust/pull/46926#issuecomment-354567412.
2017-12-30 21:38:43 +00:00
kennytm
6b1aa5301f Rollup merge of #46986 - nvzqz:basic-usage, r=steveklabnik
Add "Basic Usage" to int min_value and max_value docs

This adds "Basic Usage:" to the docs of `min_value` and `max_value`, which makes it consistent with docs of other integer methods.
2017-12-26 15:19:00 +08:00
kennytm
0ca5ce26ba Rollup merge of #46933 - clarcharr:float_docs, r=steveklabnik
Make core::f32/f64 docs match std.

For some reason these weren't in sync.
2017-12-26 15:18:56 +08:00
Nikolai Vazquez
c08a51c826 Add "Basic Usage" to int min_value, max_value docs 2017-12-24 14:01:48 -05:00
Clar Charr
556fb02e43 Move Bits constraints to RawFloat::RawBits 2017-12-23 17:51:06 -05:00
Clar Charr
a2cdeb58f6 Expose float from_bits and to_bits in libcore. 2017-12-22 21:52:52 -05:00
Trevor Spiteri
f2c5472ed5 doc: improve None condition doc for checked_div and checked_rem 2017-12-22 15:09:51 +01:00
Clar Charr
ebdd667d40 Make core::f32/f64 docs match std. 2017-12-21 20:32:07 -05:00
kennytm
b60e6f8285 Rollup merge of #46898 - tspiteri:int-overflow-not-underflow, r=steveklabnik
docs: do not call integer overflows as underflows

In the API docs, integer overflow is sometimes called underflow. Underflow is really when the magnitude of a floating-point number is too small so the number underflows to subnormal or zero. With integers it is always overflow, even if the expected result is less than the minimum number that can be represented.
2017-12-22 02:50:57 +08:00
kennytm
dc00aa4983 Rollup merge of #46820 - nodakai:simplify-int-impl, r=alexcrichton
libcore/num/mod.rs: simplify the int_impl! macro.

We can simply use generic intrinsics since cd1848a1a6 by @alexcrichton

Also, minimize unsafe blocks.
2017-12-22 02:50:50 +08:00
Trevor Spiteri
9d6bd0536a docs: do not call integer overflows as underflows 2017-12-21 02:39:01 +01:00
NODA, Kai
6bce6acebb
libcore/num/mod.rs: simplify the int_impl! macro.
We can simply use generic intrinsics since cd1848a1a6

Also, minimize unsafe blocks.

Signed-off-by: NODA, Kai <nodakai@gmail.com>
2017-12-19 00:39:05 +08:00
Corey Farwell
05cb6a5857 Display binary notation for numeric swap_bytes methods.
This better illustrates what's happening to the bits behind the scenes.
2017-12-17 16:02:11 -05:00
bors
3a0b652846 Auto merge of #46411 - rillian:str_ascii, r=kennytm
Mark ascii methods on primitive types stable in 1.23.0 not 1.21.0.

The ascii_methods_on_intrinsics feature stabilization
didn't land in time for 1.21.0. Update the annotation
so the documentation is correct about when these
methods became available.
2017-12-12 03:30:43 +00:00
Corey Farwell
a2d87d83bf Consistent parameter name for numeric ‘checked’ operations.
Some checked operations use `rhs` as a parameter name, and some use
`other`. For the sake of consistency, unify everything under the `rhs`
name.

Fixes https://github.com/rust-lang/rust/issues/46308.
2017-12-03 11:24:00 -05:00
Ralph Giles
6aef5e3b2e Mark ascii methods on primitive types stable in 1.23.0.
The ascii_methods_on_intrinsics feature stabilization
didn't land in time for 1.21.0. Update the annotation
so the documentation is correct about when these
methods became available.
2017-12-02 10:41:08 -08:00
kennytm
0e78c29bea Rollup merge of #46287 - SimonSapin:stable-constness, r=aturon
Stabilize const-calling existing const-fns in std

Fixes #46038
2017-11-29 18:37:47 +08:00
kennytm
963ab91dd4 Rollup merge of #46077 - LukasKalbertodt:stabilize-ascii-ctype, r=alexcrichton
Stabilize some `ascii_ctype` methods

As discussed in #39658, this PR stabilizes those methods for `u8` and `char`. All inherent `ascii_ctype` for `[u8]` and `str` are removed as we prefer the more explicit version `s.chars().all(|c| c.is_ascii_())`.

This PR doesn't modify the `AsciiExt` trait. There, the `ascii_ctype` methods are still unstable. It is planned to remove those in the future (I think). I had to modify some code in `ascii.rs` to properly implement `AsciiExt` for all types.

Fixes #39658.
2017-11-29 18:37:44 +08:00
Lukas Kalbertodt
c5aad96739 Change since attribute from ctype methods from 1.23 to 1.24
The changes didn't land in time for 1.23 and stabilizations won't
be backported to beta.
2017-11-28 08:50:40 +01:00
Simon Sapin
6c5f53e65e Stabilize const-calling existing const-fns in std
Fixes #46038
2017-11-26 23:43:44 +01:00
Simon Sapin
5962d7e007 Expand docs of <$Int>::from_str_radix, based on that of char::to_digit 2017-11-24 19:16:32 +01:00
Lukas Kalbertodt
03370177ca Stabilize ascii_ctype methods for u8 and char
The feature of those methods was renamed to "ascii_ctype_on_intrinsics".
2017-11-18 17:30:16 +01:00
kennytm
838a38365d
Fixed several pulldown warnings when documenting libstd. 2017-11-14 17:22:57 +08:00
bors
94ede93467 Auto merge of #44042 - LukasKalbertodt:ascii-methods-on-instrinsics, r=alexcrichton
Copy all `AsciiExt` methods to the primitive types directly in order to deprecate it later

**EDIT:** [this PR is ready now](https://github.com/rust-lang/rust/pull/44042#issuecomment-333883548). I edited this post to reflect the current status of discussion, which is (apart from code review) pretty much settled.

---

This is my current progress in order to prepare stabilization of #39658. As discussed there (and in #39659), the idea is to deprecated `AsciiExt` and copy all methods to the type directly. Apparently there isn't really a reason to have those methods in an extension trait¹.

~~This is **work in progress**: copy&pasting code while slightly modifying the documentation isn't the most exciting thing to do. Therefore I wanted to already open this WIP PR after doing basically 1/4 of the job (copying methods to `&[u8]`, `char` and `&str` is still missing) to get some feedback before I continue. Some questions possibly worth discussing:~~

1. ~~Does everyone agree that deprecating `AsciiExt` is a good idea? Does everyone agree with the goal of this PR?~~ => apparently yes
2. ~~Are my changes OK so far? Did I do something wrong?~~
3. ~~The issue of the unstable-attribute is currently set to 0. I would wait until you say "Ok" to the whole thing, then create a tracking issue and then insert the correct issue id. Is that ok?~~
4. ~~I tweaked `eq_ignore_ascii_case()`: it now takes the argument `other: u8` instead of `other: &u8`. The latter was enforced by the trait. Since we're not bound to a trait anymore, we can drop the reference, ok?~~ => I reverted this, because the interface has to match the `AsciiExt` interface exactly.

¹ ~~Could it be that we can't write `impl [u8] {}`? This might be the reason for `AsciiExt`. If that is the case: is there a good reason we can't write such an impl block? What can we do instead?~~ => we couldn't at the time this PR was opened, but Simon made it possible.

/cc @SimonSapin @zackw
2017-11-05 11:42:59 +00:00
Scott McMurray
0d745af29a Use Add::add for overflow checks instead of [rustc_inherit_overflow_checks] 2017-11-04 17:10:51 -07:00
Scott McMurray
15ea3d80da Fix #18604: next_power_of_two should panic on overflow 2017-11-03 21:48:33 -07:00
Lukas Kalbertodt
259c125267 Mark several ascii methods as unstable again
We don't want to stabilize them now already. The goal of this set of
commits is just to add inherent methods to the four types. Stabilizing
all of those methods can be done later.
2017-11-03 21:28:04 +01:00
Lukas Kalbertodt
8a4fa742a1 Fix lists in doc comments for ascii methods of u8 and char 2017-11-03 21:27:40 +01:00