Commit graph

9314 commits

Author SHA1 Message Date
bors
d40c593f42 Auto merge of #34717 - frewsxcv:sink, r=apasel422
Remove unnecessarily mutable reference in doc example.

None
2016-07-09 12:16:57 -07:00
bors
459b1a4fbb Auto merge of #34709 - GuillaumeGomez:primitives, r=steveklabnik
Improve primitive integers documentation

Fixes #29335.

r? @steveklabnik
2016-07-09 06:18:55 -07:00
bors
fdca8c2fbd Auto merge of #34700 - inejge:ai-hints, r=alexcrichton
Use hints with getaddrinfo() in std::net::lookup_host()

As noted in #24250, `std::net::lookup_host()` repeats each IPv[46] address in the result set. The number of repetitions is OS-dependent; e.g., Linux and FreeBSD give three copies, OpenBSD gives two. Filtering the duplicates can be done by the user if `lookup_host()` is used explicitly, but not with functions like `TcpStream::connect()`. What happens with the latter is that any unsuccessful connection attempt will be repeated as many times as there are duplicates of the address.

The program:

```rust
use std::net::TcpStream;

fn main() {
    let _stream = TcpStream::connect("localhost:4444").unwrap();
}
```

results in the following capture:

[capture-before.txt](https://github.com/rust-lang/rust/files/352004/capture-before.txt)

assuming that "localhost" resolves both to ::1 and 127.0.0.1, and that the listening program opens just an IPv4 socket (e.g., `nc -l 127.0.0.1 4444`.) The reason for this behavior is explained in [this comment](https://github.com/rust-lang/rust/issues/24250#issuecomment-92240152): `getaddrinfo()` is not constrained.

Various OSS projects (I checked out Postfix, OpenLDAP, Apache HTTPD and BIND) which use `getaddrinfo()` generally constrain the result set by using a non-NULL `hints` parameter and setting at least `ai_socktype` to `SOCK_STREAM`. `SOCK_DGRAM` would also work. Other parameters are unnecessary for pure name resolution.

The patch in this PR initializes a `hints` struct and passes it to `getaddrinfo()`, which eliminates the duplicates. The same test program as above with this change produces:

[capture-after.txt](https://github.com/rust-lang/rust/files/352042/capture-after.txt)

All `libstd` tests pass with this patch.
2016-07-08 19:07:45 -07:00
Guillaume Gomez
a6bbd0c1ca Improve primitive integers documentation 2016-07-08 23:03:17 +02:00
Ivan Nejgebauer
66bf1092a5 Add test for std::net::lookup_host() duplicates 2016-07-08 13:48:46 +02:00
Manish Goregaokar
5389ccc0c1 Rollup merge of #34700 - inejge:ai-hints, r=alexcrichton
Use hints with getaddrinfo() in std::net::lookup_host()

As noted in #24250, `std::net::lookup_host()` repeats each IPv[46] address in the result set. The number of repetitions is OS-dependent; e.g., Linux and FreeBSD give three copies, OpenBSD gives two. Filtering the duplicates can be done by the user if `lookup_host()` is used explicitly, but not with functions like `TcpStream::connect()`. What happens with the latter is that any unsuccessful connection attempt will be repeated as many times as there are duplicates of the address.

The program:

```rust
use std::net::TcpStream;

fn main() {
    let _stream = TcpStream::connect("localhost:4444").unwrap();
}
```

results in the following capture:

[capture-before.txt](https://github.com/rust-lang/rust/files/352004/capture-before.txt)

assuming that "localhost" resolves both to ::1 and 127.0.0.1, and that the listening program opens just an IPv4 socket (e.g., `nc -l 127.0.0.1 4444`.) The reason for this behavior is explained in [this comment](https://github.com/rust-lang/rust/issues/24250#issuecomment-92240152): `getaddrinfo()` is not constrained.

Various OSS projects (I checked out Postfix, OpenLDAP, Apache HTTPD and BIND) which use `getaddrinfo()` generally constrain the result set by using a non-NULL `hints` parameter and setting at least `ai_socktype` to `SOCK_STREAM`. `SOCK_DGRAM` would also work. Other parameters are unnecessary for pure name resolution.

The patch in this PR initializes a `hints` struct and passes it to `getaddrinfo()`, which eliminates the duplicates. The same test program as above with this change produces:

[capture-after.txt](https://github.com/rust-lang/rust/files/352042/capture-after.txt)

All `libstd` tests pass with this patch.
2016-07-08 14:47:00 +05:30
Manish Goregaokar
f4ae98ab8c Rollup merge of #34659 - GuillaumeGomez:path_file_name, r=steveklabnik
Fix `std::path::Path::file_name()` doc

Fixes #34632

r? @steveklabnik
2016-07-08 14:46:59 +05:30
Manish Goregaokar
75276f36fe Rollup merge of #34612 - frewsxcv:io-error-from_raw_os_error, r=steveklabnik
Add doc examples for `io::Error::from_raw_os_error`.

None
2016-07-08 14:46:58 +05:30
Corey Farwell
fc2123a69a Remove unnecessarily mutable reference in doc example. 2016-07-07 22:58:47 -04:00
Ivan Nejgebauer
0314d179aa Use hints with getaddrinfo() in std::net::lokup_host()
When resolving a hostname, pass a hints struct where ai_socktype is
set to SOCK_STREAM in order to eliminate repeated results for each
protocol family.
2016-07-07 12:03:31 +02:00
Corey Farwell
98e3120ad2 Add doc examples for io::Error::from_raw_os_error. 2016-07-06 19:39:21 -04:00
Steve Klabnik
1b7bebf84d Rollup merge of #34626 - sylvestre:master, r=Manishearth
Fix typos
2016-07-06 19:13:07 -04:00
ggomez
0d78f6b40f Fix std::path::Path::file_name() doc 2016-07-06 01:26:24 +02:00
bors
acfa113c12 Auto merge of #34590 - pwlandoll:master, r=apasel422
Issue #34076: Removing reference to removed path.prefix() function

In the documentation for `std::path::Path`, there is a [reference](https://doc.rust-lang.org/std/path/struct.Path.html#method.is_absolute) to the `path.prefix()` function which has since been removed. The offending reference is now also removed.

First pull request, feedback welcome!

r? @steveklabnik
2016-07-04 05:03:04 -07:00
bors
696b703b5a Auto merge of #34530 - alexcrichton:stabilize-1.11, r=aturon
std: Stabilize APIs for the 1.11.0 release

Although the set of APIs being stabilized this release is relatively small, the
trains keep going! Listed below are the APIs in the standard library which have
either transitioned from unstable to stable or those from unstable to
deprecated.

Stable

* `BTreeMap::{append, split_off}`
* `BTreeSet::{append, split_off}`
* `Cell::get_mut`
* `RefCell::get_mut`
* `BinaryHeap::append`
* `{f32, f64}::{to_degrees, to_radians}` - libcore stabilizations mirroring past
  libstd stabilizations
* `Iterator::sum`
* `Iterator::product`

Deprecated

* `{f32, f64}::next_after`
* `{f32, f64}::integer_decode`
* `{f32, f64}::ldexp`
* `{f32, f64}::frexp`
* `num::One`
* `num::Zero`

Added APIs (all unstable)

* `iter::Sum`
* `iter::Product`
* `iter::Step` - a few methods were added to accomodate deprecation of One/Zero

Removed APIs

* `From<Range<T>> for RangeInclusive<T>` - everything about `RangeInclusive` is
  unstable

Closes #27739
Closes #27752
Closes #32526
Closes #33444
Closes #34152
cc #34529 (new tracking issue)
2016-07-03 14:33:55 -07:00
Alex Crichton
3016626c3a std: Stabilize APIs for the 1.11.0 release
Although the set of APIs being stabilized this release is relatively small, the
trains keep going! Listed below are the APIs in the standard library which have
either transitioned from unstable to stable or those from unstable to
deprecated.

Stable

* `BTreeMap::{append, split_off}`
* `BTreeSet::{append, split_off}`
* `Cell::get_mut`
* `RefCell::get_mut`
* `BinaryHeap::append`
* `{f32, f64}::{to_degrees, to_radians}` - libcore stabilizations mirroring past
  libstd stabilizations
* `Iterator::sum`
* `Iterator::product`

Deprecated

* `{f32, f64}::next_after`
* `{f32, f64}::integer_decode`
* `{f32, f64}::ldexp`
* `{f32, f64}::frexp`
* `num::One`
* `num::Zero`

Added APIs (all unstable)

* `iter::Sum`
* `iter::Product`
* `iter::Step` - a few methods were added to accomodate deprecation of One/Zero

Removed APIs

* `From<Range<T>> for RangeInclusive<T>` - everything about `RangeInclusive` is
  unstable

Closes #27739
Closes #27752
Closes #32526
Closes #33444
Closes #34152
cc #34529 (new tracking issue)
2016-07-03 10:49:01 -07:00
Sylvestre Ledru
872d107dea Fix a few typos in the code 2016-07-03 10:02:24 +02:00
Manish Goregaokar
adda4e41be Rollup merge of #34583 - steveklabnik:remove-unneeded-deprecated, r=alexcrichton
remove unneeded allow flag

There isn't anything deprecated being used in this function.

This built fine for me locally, but just to be sure, should check Travis.
2016-07-02 15:46:50 +05:30
bors
32a6373322 Auto merge of #34067 - tbu-:pr_lookup_host_ignore_other_addresses, r=alexcrichton
Ignore unknown address types when looking up hosts

Previously, any function using a `ToSocketAddrs` input would fail if
passed a hostname that resolves to an address type different from the
ones recognized by Rust.

This also changes the `LookupHost` iterator to only include the known
address types, as a result, it doesn't have to return `Result`s any
more, which are likely misinterpreted as failed name lookups.
2016-07-01 18:43:28 -07:00
Peter Landoll
acc8ec0d8d Issue #34076: Removing reference to removed path.prefix() function 2016-06-30 18:34:12 -04:00
Steve Klabnik
9ad64e41c5 remove unneeded allow flag
There isn't anything deprecated being used in this function.
2016-06-30 17:06:52 -04:00
Sean McArthur
db1b1919ba std: use siphash-1-3 for HashMap 2016-06-29 16:08:32 -07:00
Tobias Bucher
6aa0182520 Update documentation to reflect ignoring of unknown addresses 2016-06-29 11:44:33 +02:00
Tobias Bucher
a03a82e5e0 Convert a simple tail call to a loop 2016-06-29 11:39:56 +02:00
Tobias Bucher
d6237cefcb Ignore unknown address types when looking up hosts
Previously, any function using a `ToSocketAddrs` input would fail if
passed a hostname that resolves to an address type different from the
ones recognized by Rust.

This also changes the `LookupHost` iterator to only include the known
address types, as a result, it doesn't have to return `Result`s any
more, which are likely misinterpreted as failed name lookups.
2016-06-29 11:39:56 +02:00
Guillaume Gomez
dd56a6ad08 Rollup merge of #34524 - frewsxcv:std-io-sink, r=GuillaumeGomez
Add doc example for `std::io::sink`.

None
2016-06-28 16:05:16 +02:00
Guillaume Gomez
dcc8fa5270 Rollup merge of #34518 - frewsxcv:io-repeat, r=GuillaumeGomez
Add doc example for `std::io::repeat`.

None
2016-06-28 16:05:16 +02:00
Guillaume Gomez
f47fcc738b Rollup merge of #34517 - frewsxcv:empty, r=GuillaumeGomez
Minor rewrite of `std::io::empty` doc example.

None
2016-06-28 16:05:16 +02:00
Guillaume Gomez
f8453a1d17 Rollup merge of #34475 - frewsxcv:path-component, r=GuillaumeGomez
Expand `std::path::Component` documentation.

Indicate how it gets created and add an example.
2016-06-28 16:05:15 +02:00
Guillaume Gomez
adc70bdc90 Rollup merge of #34415 - ollie27:docs_float, r=steveklabnik
Use the correct types in float examples

r? @steveklabnik
2016-06-28 16:05:14 +02:00
Guillaume Gomez
5d6b41f3bc Rollup merge of #34406 - frewsxcv:sleep-ex, r=alexcrichton
Add example for `std:🧵:sleep`.

None
2016-06-28 16:05:14 +02:00
Corey Farwell
325e09e952 Add doc example for std::io::sink. 2016-06-28 08:22:44 -04:00
Corey Farwell
a350ca62cd Minor rewrite of std::io::empty doc example.
Remove unnecessary hidden `foo` function.
Demonstrate this emptiness of the resulting string.
Combine imports.
2016-06-27 22:28:28 -04:00
Corey Farwell
18b094bdbd Add doc example for std::io::repeat. 2016-06-27 21:23:53 -04:00
Corey Farwell
a7b9e5441b Add example for std:🧵:sleep. 2016-06-27 13:06:20 -04:00
Corey Farwell
f1d600c6f8 Expand std::path::Component documentation.
Indicate how it gets created and add an example.
2016-06-26 20:22:12 -04:00
bors
15e8a67c47 Auto merge of #34469 - frewsxcv:path-components, r=GuillaumeGomez
Indicate how the `std::path::Components` struct is created.

None
2016-06-25 22:06:35 -07:00
bors
c12eb1d7a2 Auto merge of #34468 - frewsxcv:doc-links, r=GuillaumeGomez
Add hyperlinks to `std::fs` functions from `std::path`.

None
2016-06-25 19:24:29 -07:00
bors
2cfd91d0ce Auto merge of #34465 - frewsxcv:builder-name-example, r=GuillaumeGomez
Add doc example for `std:🧵:Builder::name`.

None
2016-06-25 15:47:31 -07:00
bors
91c0d04943 Auto merge of #34410 - frewsxcv:code-like, r=apasel422
Parameters in doc comment should be formatted code-like.

None
2016-06-25 13:01:31 -07:00
Corey Farwell
f300fafccd Indicate how the std::path::Components struct is created. 2016-06-25 10:05:01 -04:00
Corey Farwell
c55f0922aa Add hyperlinks to std::fs functions from std::path. 2016-06-25 09:26:41 -04:00
Manish Goregaokar
80b352c892 Rollup merge of #34438 - frewsxcv:joinhandle, r=GuillaumeGomez
Indicate how the `JoinHandle` struct is created.

None
2016-06-25 18:16:40 +05:30
Corey Farwell
fd388d40ed Add doc example for std:🧵:Builder::name. 2016-06-25 07:22:19 -04:00
bors
35004b42bc Auto merge of #34452 - frewsxcv:unwrap-or, r=alexcrichton
Use `Option::expect` instead of `unwrap_or_else` with `panic!`.

None
2016-06-24 23:14:12 -07:00
bors
c128e9bb2e Auto merge of #34441 - tbu-:pr_dont_ignore_errors, r=alexcrichton
Don't ignore errors of syscalls in std::sys::unix::fd

If any of these syscalls fail, it indicates a programmer error that
should not be silently ignored.
2016-06-24 18:28:23 -07:00
Corey Farwell
5e9b75e2dd Add examples in docs for JoinHandle. 2016-06-24 12:25:26 -04:00
bors
4b89debc7b Auto merge of #34425 - tbu-:pr_len_instead_of_size_hint, r=alexcrichton
Use `len` instead of `size_hint` where appropiate

This makes it clearer that we're not just looking for a lower bound but
rather know that the iterator is an `ExactSizeIterator`.
2016-06-24 09:03:54 -07:00
Corey Farwell
0a6ce30161 Use Option::expect instead of unwrap_or_else with panic!. 2016-06-24 08:19:22 -04:00
Corey Farwell
6e848be5f8 Indicate how the JoinHandle struct is created. 2016-06-24 08:13:30 -04:00