Camelid
bc8367617e
Switch to intra-doc links in std/io/mod.rs
2020-08-12 15:11:17 -07:00
Alexis Bourget
aa1fb31bf1
Move to intra doc links in std/src/fs.rs
2020-08-12 23:59:10 +02:00
Alexis Bourget
3f16597a6a
Move to intra doc links whenever possible within std/src/lib.rs
2020-08-12 23:23:07 +02:00
Alexis Bourget
0e010a6992
Move to intra doc links for ascii.rs and panic.rs, updating the docs a little
2020-08-12 22:58:18 +02:00
CDirkx
6b0d44e92a
Make some Ordering methods const
...
Constify the following methods of `core::cmp::Ordering`:
- `reverse`
- `then`
Possible because of #49146 (Allow `if` and `match` in constants).
2020-08-12 22:10:32 +02:00
Lukas Kalbertodt
db99f98c3e
Put panic code path from copy_from_slice
into cold function
...
The previous `assert_eq` generated quite some code, which is especially
problematic when this call is inlined. This commit also slightly
improves the panic message from:
assertion failed: `(left == right)`
left: `3`,
right: `2`: destination and source slices have different lengths
...to:
source slice length (2) does not match destination slice length (3)
2020-08-12 21:12:21 +02:00
Nathan West
3aa233d3dc
Rebase the LineWriter refactor to the new stdlib layout
2020-08-12 15:04:53 -04:00
The8472
f0783632d3
more concise error matching
2020-08-12 20:09:55 +02:00
bors
3df25ae186
Auto merge of #75019 - nanpuyue:to_ipv4_mapped, r=LukasKalbertodt
...
Add Ipv6Addr::to_ipv4_mapped
* add Ipv6Addr::to_ipv4_mapped
* ~~deprecate Ipv4Addr::to_ipv6_compatible & Ipv6Addr::to_ipv4~~ reference: #75150
According to [IETF RFC 4291](https://tools.ietf.org/html/rfc4291#page-10 ), the "IPv4-Compatible IPv6 address" is deprecated.
> 2.5.5.1. IPv4-Compatible IPv6 Address
>
> The "IPv4-Compatible IPv6 address" was defined to assist in the IPv6
> transition. The format of the "IPv4-Compatible IPv6 address" is as
> follows:
>
> | 80 bits | 16 | 32 bits |
> +--------------------------------------+--------------------------+
> |0000..............................0000|0000| IPv4 address |
> +--------------------------------------+----+---------------------+
>
> Note: The IPv4 address used in the "IPv4-Compatible IPv6 address"
> must be a globally-unique IPv4 unicast address.
>
> The "IPv4-Compatible IPv6 address" is now deprecated because the
> current IPv6 transition mechanisms no longer use these addresses.
> New or updated implementations are not required to support this
> address type.
And the current implementation of `Ipv4Addr::to_ipv6_compatible`is incorrect: it does not check whether the IPv4 address is a globally-unique IPv4 unicast address.
Please let me know if there are any issues with this pull request.
2020-08-12 16:30:46 +00:00
Laurence Tratt
55802e3bf3
Add Rust function pointers.
...
Co-authored-by: Ralf Jung <post@ralfj.de>
2020-08-12 15:38:18 +00:00
Laurence Tratt
8cb8955d57
Change notation.
...
Co-authored-by: Ralf Jung <post@ralfj.de>
2020-08-12 15:19:46 +00:00
Laurence Tratt
f3d7196cae
Be clearer about Some/None transmute.
2020-08-12 15:53:58 +01:00
Laurence Tratt
83f47aa11b
Be clear about the reverse transmute
guarantees.
2020-08-12 15:47:37 +01:00
Laurence Tratt
f5118a525f
Clarify and add guarantee about transmute
.
2020-08-12 15:36:55 +01:00
bors
ded20c98be
Auto merge of #75066 - poliorcetics:document-unsafety-in-core-slice, r=LukasKalbertodt
...
Document unsafety in library/core/src/slice/mod.rs
Restart where #73555 left off, helping with #66219 .
2020-08-12 14:18:15 +00:00
Ivan Tham
cda660b5fc
Use explicit path link in place for doc in time
2020-08-12 22:17:12 +08:00
Laurence Tratt
73ada2d404
Explicitly document the size guarantees that Option makes.
...
Triggered by a discussion on wg-unsafe-code-guidelines about which layouts of
`Option<T>` one can guarantee are optimised to a single pointer.
2020-08-12 15:07:38 +01:00
Denis Vasilik
4c5896fbeb
Remove intra-doc link as it resolves without reference link
...
Co-authored-by: Joshua Nelson <joshua@yottadb.com>
2020-08-12 08:28:55 +02:00
Camelid
d8f96146e8
Use Child::std{in,out,err}
instead of Child.
...
These links were broken before.
2020-08-11 20:10:41 -07:00
Yuki Okushi
2cc7da6f95
Rollup merge of #75424 - joseluis:patch-1, r=joshtriplett
...
fix wrong word in documentation
Change "two" to "three", since there are three significantly different things printed below that sentence:
---
While these:
```rust
println!("{}, `{name:.*}` has 3 fractional digits", "Hello", 3, name=1234.56);
println!("{}, `{name:.*}` has 3 characters", "Hello", 3, name="1234.56");
println!("{}, `{name:>8.*}` has 3 right-aligned characters", "Hello", 3, name="1234.56");
```
print two significantly different things:
``` rust
Hello, `1234.560` has 3 fractional digits
Hello, `123` has 3 characters
Hello, ` 123` has 3 right-aligned characters
```
---
[`https://doc.rust-lang.org/std/fmt/#precision `](https://doc.rust-lang.org/std/fmt/#precision )
2020-08-12 12:07:21 +09:00
Yuki Okushi
7a900835c1
Rollup merge of #75395 - nixphix:docs/os-fs, r=jyn514
...
Switch to intra-doc links in library/std/src/os/*/fs.rs
Partial fix for #75080
@rustbot modify labels: T-doc, T-rustdoc, A-intra-doc-links
2020-08-12 12:07:17 +09:00
Yuki Okushi
261773e185
Rollup merge of #75371 - poliorcetics:intra-doc-links-std-time, r=jyn514
...
Move to doc links inside std/time.rs
Helps with #75080 .
@rustbot modify labels: T-doc, A-intra-doc-links, T-rustdoc
2020-08-12 12:07:14 +09:00
Yuki Okushi
c423fdeb74
Rollup merge of #75368 - poliorcetics:intra-doc-links-std-prelude, r=jyn514
...
Move to doc links inside the prelude
Helps with #75080 .
@rustbot modify labels: T-doc, A-intra-doc-links, T-rustdoc
2020-08-12 12:07:12 +09:00
Camelid
e005b71125
Switch to intra-doc links in std::process
2020-08-11 18:02:24 -07:00
The8472
1316c786a0
Workaround for copy_file_range spuriously returning EOPNOTSUPP when attemted on a NFS mount under RHEL/CentOS 7.
...
The syscall is supposed to return ENOSYS in most cases but when calling it on NFS it may leak through
EOPNOTSUPP even though that's supposed to be handled by the kernel and not returned to userspace.
Since it returns ENOSYS in some cases anyway this will trip the HAS_COPY_FILE_RANGE
detection anyway, so treat EOPNOTSUPP as if it were a ENOSYS.
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/7.8_release_notes/deprecated_functionality#the_literal_copy_file_range_literal_call_has_been_disabled_on_local_file_systems_and_in_nfs
https://bugzilla.redhat.com/show_bug.cgi?id=1783554
2020-08-12 01:30:22 +02:00
Stein Somers
17ab457f21
Somewhat complicated way to respect BTreeMap's node length invariant
2020-08-12 00:09:00 +02:00
Denis Vasilik
c4923419c2
Revert broken link
2020-08-11 23:54:51 +02:00
José Luis Cruz
df5c889784
word change
...
there are three significantly different things printed below
2020-08-11 22:33:11 +02:00
Denis Vasilik
3c2eb18b9b
Use intra-doc links
2020-08-11 22:16:31 +02:00
Alexis Bourget
bd01bf9274
Remove two links by changing the doc for SystemTimeError::duration
2020-08-11 21:53:02 +02:00
Poliorcetics
a308e74e13
Add some texts to make the tidy check for unsafe documentation pass
2020-08-11 21:37:22 +02:00
Alexis Bourget
3ff06a9f2c
Move the std::vec link back to a path-based link to make it compile with --stage 0
2020-08-11 21:30:20 +02:00
Tyler Mandry
5d9a0b020c
Rollup merge of #75409 - pickfire:patch-4, r=GuillaumeGomez
...
Fix range term in alloc vec doc
`range` is not an element, it is a variable.
r? @GuillaumeGomez
2020-08-11 12:28:40 -07:00
Tyler Mandry
06eb274bfc
Rollup merge of #75407 - oliver-giersch:set_ptr_value, r=RalfJung
...
Requested changes to [*mut T|*const T]::set_ptr_value
This is a follow-up to PR #74774 (tracking issue #75091 ), acting on some change requests made after approval:
- adds `#[must_use]` attribute
- changes type of `val` pointer argument from `()` to `u8`
- adjusts documentation mentioning pointer provenance
2020-08-11 12:28:37 -07:00
Alexis Bourget
91ba92b6df
Change safety comment for usize with the one from LukasKalbertodt review
2020-08-11 21:23:00 +02:00
Nazım Can Altınova
8faf550e5f
Remove the unused bounds from Debug impl of HashMap::{IntoKeys,IntoValues}
2020-08-11 20:42:02 +02:00
Lzu Tao
e8ea6e59f0
prefer pattern matching over indexing
2020-08-11 16:07:39 +00:00
Ivan Tham
e4f2de2e9a
Fix range term in alloc vec doc
...
`range` is not an element, it is a variable.
2020-08-11 23:57:13 +08:00
Prabakaran Kumaresshan
32fccc445a
Revert #tymethods
2020-08-11 19:50:17 +05:30
oliver-giersch
19c9674966
mentions provenance, changes argument type, adds must_use attr
2020-08-11 16:14:34 +02:00
bors
4b9ac51617
Auto merge of #75388 - JohnTitor:rollup-9tgkxnl, r=JohnTitor
...
Rollup of 10 pull requests
Successful merges:
- #74744 (Update RELEASES.md for 1.46.0)
- #75085 (Transmute big endian `s6_addr` and `[u16; 8]`)
- #75226 (Miri: Renamed "undef" to "uninit")
- #75333 (polymorphize: constrain unevaluated const handling)
- #75338 (move stack size check to const_eval machine)
- #75347 (Rustdoc: Fix natural ordering to look at all numbers.)
- #75352 (Tweak conditions for E0026 and E0769)
- #75353 (Tiny cleanup, remove unnecessary `unwrap`)
- #75359 (unused_delims: trim expr)
- #75360 (Add sample fix for E0749)
Failed merges:
r? @ghost
2020-08-11 12:31:56 +00:00
Lukas Kalbertodt
709d1056b8
Fix minor things in the f32
primitive docs
...
All of these were review comments in #74621 that I first fixed
in that PR, but later accidentally overwrote by a force push.
2020-08-11 13:50:54 +02:00
Stein Somers
3a02e06002
BTreeMap: purge innocent use of into_kv_mut
2020-08-11 12:20:18 +02:00
Prabakaran Kumaresshan
29045b699e
Switch to intra-doc links in library/std/src/os/*/fs.rs
2020-08-11 15:20:01 +05:30
Oliver Scherer
34c3c0dae5
Make <*const T>::is_null
const fn
2020-08-11 11:45:47 +02:00
Yuki Okushi
f26f201d42
Rollup merge of #75085 - lzutao:ip_union, r=cuviper
...
Transmute big endian `s6_addr` and `[u16; 8]`
The old code already made the assumption to reinterpret
`Ipv6Addr` as `[u16; 8]`.
Glibc, Linux, FreeBSD, Win32 all makes this assumption.
The main motivation of using union it to better optimize code.
Godbolt: https://rust.godbolt.org/z/b4bGvo
Const is introducing unsafe when transmuting.
ref:
* https://docs.microsoft.com/en-us/windows/win32/api/in6addr/ns-in6addr-in6_addr
* 1d6e424741/contrib/ntp/lib/isc/include/isc/ipv6.h (L63)
* 8b531aa996/include/net/net_ip.h (L137)
* https://sourceware.org/git/?p=glibc.git;a=blob;f=inet/netinet/in.h;h=f6355c7efe5192b88337b136ef687fe9a5ed648c;hb=HEAD#l216
2020-08-11 16:23:45 +09:00
Marcel Hellwig
00d537dcd0
deny(unsafe_op_in_unsafe_fn) in libstd/path.rs
2020-08-11 09:22:27 +02:00
Marcel Hellwig
73e27b3e18
deny(unsafe_op_in_unsafe_fn) in libstd/process.rs
2020-08-11 09:11:55 +02:00
Ivan Tham
8ec348afdd
Remove branch in optimized is_ascii
...
Performs slightly better in short or medium bytes by eliminating
the last branch check on `byte_pos == len` and always check the
last byte as it is always at most one `usize`.
Benchmark, before `libcore`, after `libcore_new`. It improves
medium and short by 1ns but regresses unaligned_tail by 2ns,
either way we can get unaligned_tail have a tiny chance of 1/8
on a 64 bit machine. I don't think we should bet on that, the
probability is worse than dice.
test long::case00_libcore ... bench: 38 ns/iter (+/- 1) = 183947 MB/s
test long::case00_libcore_new ... bench: 38 ns/iter (+/- 1) = 183947 MB/s
test long::case01_iter_all ... bench: 227 ns/iter (+/- 6) = 30792 MB/s
test long::case02_align_to ... bench: 40 ns/iter (+/- 1) = 174750 MB/s
test long::case03_align_to_unrolled ... bench: 19 ns/iter (+/- 1) = 367894 MB/s
test medium::case00_libcore ... bench: 5 ns/iter (+/- 0) = 6400 MB/s
test medium::case00_libcore_new ... bench: 4 ns/iter (+/- 0) = 8000 MB/s
test medium::case01_iter_all ... bench: 20 ns/iter (+/- 1) = 1600 MB/s
test medium::case02_align_to ... bench: 6 ns/iter (+/- 0) = 5333 MB/s
test medium::case03_align_to_unrolled ... bench: 5 ns/iter (+/- 0) = 6400 MB/s
test short::case00_libcore ... bench: 7 ns/iter (+/- 0) = 1000 MB/s
test short::case00_libcore_new ... bench: 6 ns/iter (+/- 0) = 1166 MB/s
test short::case01_iter_all ... bench: 5 ns/iter (+/- 0) = 1400 MB/s
test short::case02_align_to ... bench: 5 ns/iter (+/- 0) = 1400 MB/s
test short::case03_align_to_unrolled ... bench: 5 ns/iter (+/- 1) = 1400 MB/s
test unaligned_both::case00_libcore ... bench: 4 ns/iter (+/- 0) = 7500 MB/s
test unaligned_both::case00_libcore_new ... bench: 4 ns/iter (+/- 0) = 7500 MB/s
test unaligned_both::case01_iter_all ... bench: 26 ns/iter (+/- 0) = 1153 MB/s
test unaligned_both::case02_align_to ... bench: 13 ns/iter (+/- 2) = 2307 MB/s
test unaligned_both::case03_align_to_unrolled ... bench: 11 ns/iter (+/- 0) = 2727 MB/s
test unaligned_head::case00_libcore ... bench: 5 ns/iter (+/- 0) = 6200 MB/s
test unaligned_head::case00_libcore_new ... bench: 5 ns/iter (+/- 0) = 6200 MB/s
test unaligned_head::case01_iter_all ... bench: 19 ns/iter (+/- 1) = 1631 MB/s
test unaligned_head::case02_align_to ... bench: 10 ns/iter (+/- 0) = 3100 MB/s
test unaligned_head::case03_align_to_unrolled ... bench: 14 ns/iter (+/- 0) = 2214 MB/s
test unaligned_tail::case00_libcore ... bench: 3 ns/iter (+/- 0) = 10333 MB/s
test unaligned_tail::case00_libcore_new ... bench: 5 ns/iter (+/- 0) = 6200 MB/s
test unaligned_tail::case01_iter_all ... bench: 19 ns/iter (+/- 0) = 1631 MB/s
test unaligned_tail::case02_align_to ... bench: 10 ns/iter (+/- 0) = 3100 MB/s
test unaligned_tail::case03_align_to_unrolled ... bench: 13 ns/iter (+/- 0) = 2384 MB/s
Rough (unfair) maths on improvements for fun: 1ns * 7/8 - 2ns * 1/8 = 0.625ns
Inspired by fish and zsh clever trick to highlight missing linefeeds (⏎)
and branchless implementation of binary_search in rust.
2020-08-11 14:40:39 +08:00
bors
441fd22557
Auto merge of #75329 - ssomers:btree_cleanup_8, r=Mark-Simulacrum
...
BTreeMap: better distinguish the root holder from the root node
Renames and intermediate variables
2020-08-11 06:17:02 +00:00