Phlosioneer
8334977dcf
Fix incorrect lower bounds
2018-03-24 23:35:16 -04:00
Phlosioneer
619003d1d4
Implement some trivial size_hints for various iterators
...
This also implements ExactSizeIterator where applicable.
Addresses most of the Iterator traits mentioned in #23708 .
2018-03-20 05:33:59 -04:00
kennytm
8e3493d459
Rollup merge of #47463 - bluss:fused-iterator, r=alexcrichton
...
Stabilize FusedIterator
FusedIterator is a marker trait that promises that the implementing
iterator continues to return `None` from `.next()` once it has returned
`None` once (and/or `.next_back()`, if implemented).
The effects of FusedIterator are already widely available through
`.fuse()`, but with stable `FusedIterator`, stable Rust users can
implement this trait for their iterators when appropriate.
Closes #35602
2018-03-06 20:52:37 +08:00
Ulrik Sverdrup
c7c23fe948
core: Update stability attributes for FusedIterator
2018-03-03 14:23:05 +01:00
Ulrik Sverdrup
bc651cac8d
core: Stabilize FusedIterator
...
FusedIterator is a marker trait that promises that the implementing
iterator continues to return `None` from `.next()` once it has returned
`None` once (and/or `.next_back()`, if implemented).
The effects of FusedIterator are already widely available through
`.fuse()`, but with stable `FusedIterator`, stable Rust users can
implement this trait for their iterators when appropriate.
2018-03-03 14:14:03 +01:00
Lukas Lueg
f7693c0633
Fix spelling s/casted/cast/
2018-03-01 12:54:16 +01:00
tinaun
838ddbf908
derive PartialEq and Eq for ParseCharError
...
unlike the other Parse*Error types, ParseCharError didn't have these implemented for whatever reason
2018-01-26 18:52:27 -05:00
Alex Crichton
4c9c6e824b
std: Stabilize char_escape_debug
...
Stabilizes:
* `<char>::escape_debug`
* `std::char::EscapeDebug`
Closes #35068
2017-07-25 07:09:31 -07:00
Oliver Middleton
f2566bbaeb
Correct some stability attributes
...
These show up in rustdoc so need to be correct.
2017-07-10 02:07:29 +01:00
tinaun
fd9d7aa2cf
added FromStr Impl for char
2017-06-20 04:38:02 -04:00
Clar Charr
a2b28be3f8
Reduce str transmutes, add mut versions of methods.
2017-04-09 19:13:54 -04:00
Irfan Hudda
3783c44eac
Fix typo in libcore/char.rs
2017-03-29 16:50:09 +05:30
steveklabnik
d1d9626e75
Fix up various links
...
The unstable book, libstd, libcore, and liballoc all needed some
adjustment.
2017-03-20 10:10:16 -04:00
bors
6738cd4d47
Auto merge of #40281 - jimmycuadra:try-from-from-str, r=aturon
...
Rename TryFrom's associated type and implement str::parse using TryFrom.
Per discussion on the tracking issue, naming `TryFrom`'s associated type `Error` is generally more consistent with similar traits in the Rust ecosystem, and what people seem to assume it should be called. It also helps disambiguate from `Result::Err`, the most common "Err".
See https://github.com/rust-lang/rust/issues/33417#issuecomment-269108968 .
`TryFrom<&str>` and `FromStr` are equivalent, so have the latter provide the former to ensure that. Using `TryFrom` in the implementation of `str::parse` means types that implement either trait can use it. When we're ready to stabilize `TryFrom`, we should update `FromStr` to
suggest implementing `TryFrom<&str>` instead for new code.
See https://github.com/rust-lang/rust/issues/33417#issuecomment-277175994
and https://github.com/rust-lang/rust/issues/33417#issuecomment-277253827 .
Refs #33417 .
2017-03-20 05:36:36 +00:00
Jimmy Cuadra
2561dcddf9
Rename TryFrom's associated type and implement str::parse using TryFrom.
...
Per discussion on the tracking issue, naming `TryFrom`'s associated type
`Error` is generally more consistent with similar traits in the Rust
ecosystem, and what people seem to assume it should be called. It
also helps disambiguate from `Result::Err`, the most common "Err".
See
https://github.com/rust-lang/rust/issues/33417#issuecomment-269108968 .
TryFrom<&str> and FromStr are equivalent, so have the latter provide the
former to ensure that. Using TryFrom in the implementation of
`str::parse` means types that implement either trait can use it.
When we're ready to stabilize `TryFrom`, we should update `FromStr` to
suggest implementing `TryFrom<&str>` instead for new code.
See
https://github.com/rust-lang/rust/issues/33417#issuecomment-277175994
and
https://github.com/rust-lang/rust/issues/33417#issuecomment-277253827 .
Refs #33417 .
2017-03-15 07:51:54 -07:00
Corey Farwell
e7b0f2badf
Remove function invokation parens from documentation links.
...
This was never established as a convention we should follow in the 'More
API Documentation Conventions' RFC:
https://github.com/rust-lang/rfcs/blob/master/text/1574-more-api-documentation-conventions.md
2017-03-13 21:43:18 -04:00
Oliver Middleton
9128f6100c
Fix a few impl stability attributes
...
The versions show up in rustdoc.
2017-01-29 13:31:47 +00:00
Clar Charr
3a79f2e2f1
Implement Display for char Escape*, To*case.
2017-01-11 12:39:56 -05:00
Aaron Turon
415f3de7aa
Stabilize std::char::{encode_utf8, encode_utf16}
2016-12-15 10:56:55 -08:00
Corey Farwell
274777a158
Rename 'librustc_unicode' crate to 'libstd_unicode'.
...
Fixes #26554 .
2016-11-30 01:24:01 -05:00
Sam Estep
b15e6a6a00
Use "radices" instead of "radicum"
2016-11-23 08:49:35 -05:00
tormol
13a2dd96fe
[breaking-change] std: change encode_utf{8,16}() to take a buffer and return a slice
...
They panic if the buffer is too small.
2016-09-28 09:03:30 +02:00
Guillaume Gomez
b4c739dbdd
Add missing Eq implementations
2016-09-18 14:26:49 +02:00
Simon Sapin
f040208d53
Implement TryFrom<u32> for char
...
For symmetry with From<char> for u32.
2016-08-29 17:34:02 +02:00
Simon Sapin
41d0a89e3a
Implement From<char> for u32, and From<u8> for char
...
These fit with other From implementations between integer types.
This helps the coding style of avoiding the 'as' operator that sometimes
silently truncates, and signals that these specific conversions are
lossless and infaillible.
2016-08-29 17:34:02 +02:00
bors
eaf71f8d10
Auto merge of #35906 - jseyfried:local_prelude, r=eddyb
...
Use `#[prelude_import]` in `libcore` and `libstd`
r? @eddyb
2016-08-25 20:45:32 -07:00
Manish Goregaokar
5deee46e25
Rollup merge of #35947 - SimonSapin:decodeutf8-error-handling, r=alexcrichton
...
Yield Err in char::decode_utf8 per Unicode, like String::from_utf8_lossy
r? @alexcrichton
2016-08-25 17:08:01 +05:30
Jeffrey Seyfried
e2ad3be178
Use #[prelude_import] in libcore.
2016-08-24 22:12:23 +00:00
Simon Sapin
46226a7a6e
Yield Err in char::decode_utf8 per Unicode, like String::from_utf8_lossy
2016-08-23 22:09:59 +02:00
Steven Allen
de91872a33
Add a FusedIterator trait.
...
This trait can be used to avoid the overhead of a fuse wrapper when an iterator
is already well-behaved.
Conforming to: RFC 1581
Closes : #35602
2016-08-18 12:16:29 -04:00
Tobias Bucher
3d09b4a0d5
Rename char::escape to char::escape_debug and add tracking issue
2016-07-28 02:20:49 +02:00
Tobias Bucher
68efea08fa
Restore char::escape_default and add char::escape instead
2016-07-26 15:15:00 +02:00
Tobias Bucher
e7d16580f5
Escape fewer Unicode codepoints in Debug impl of str
...
Use the same procedure as Python to determine whether a character is
printable, described in [PEP 3138]. In particular, this means that the
following character classes are escaped:
- Cc (Other, Control)
- Cf (Other, Format)
- Cs (Other, Surrogate), even though they can't appear in Rust strings
- Co (Other, Private Use)
- Cn (Other, Not Assigned)
- Zl (Separator, Line)
- Zp (Separator, Paragraph)
- Zs (Separator, Space), except for the ASCII space `' '` (`0x20`)
This allows for user-friendly inspection of strings that are not
English (e.g. compare `"\u{e9}\u{e8}\u{ea}"` to `"éèê"`).
Fixes #34318 .
[PEP 3138]: https://www.python.org/dev/peps/pep-3138/
2016-07-23 00:18:44 +02:00
M Farkas-Dyck
837029fec1
add core::char::DecodeUtf8
2016-07-13 17:40:16 -08:00
Andrea Canciani
41950c64a1
Explain the order of the enumeration items
...
Simply a micro-optimization to reduce code size and to open up
inlining opportunities.
2016-05-26 10:04:05 +02:00
Andrea Canciani
da03950f62
Move length computation to ExactSizeIterator impls
...
and reuse it in `size_hint`.
2016-05-26 09:59:21 +02:00
Andrea Canciani
baa9680a34
Implement count for EscapeDefault and EscapeUnicode
...
Trivial implementation, as both are `ExactSizeIterator`s.
Part of #24214 .
2016-05-26 09:59:21 +02:00
Andrea Canciani
c30fa92a0a
EscapeUnicode and EscapeDefault are ExactSizeIterators
...
In #28662 , `size_hint` was made exact for `EscapeUnicode` and
`EscapeDefault`, but neither was marked as `ExactSizeIterator`.
2016-05-26 09:59:21 +02:00
bors
d5759a3417
Auto merge of #33699 - alexcrichton:stabilize-1.10, r=aturon
...
std: Stabilize APIs for the 1.10 release
This commit applies the FCP decisions made by the libs team for the 1.10 cycle,
including both new stabilizations and deprecations. Specifically, the list of
APIs is:
Stabilized:
* `os::windows::fs::OpenOptionsExt::access_mode`
* `os::windows::fs::OpenOptionsExt::share_mode`
* `os::windows::fs::OpenOptionsExt::custom_flags`
* `os::windows::fs::OpenOptionsExt::attributes`
* `os::windows::fs::OpenOptionsExt::security_qos_flags`
* `os::unix::fs::OpenOptionsExt::custom_flags`
* `sync::Weak::new`
* `Default for sync::Weak`
* `panic::set_hook`
* `panic::take_hook`
* `panic::PanicInfo`
* `panic::PanicInfo::payload`
* `panic::PanicInfo::location`
* `panic::Location`
* `panic::Location::file`
* `panic::Location::line`
* `ffi::CStr::from_bytes_with_nul`
* `ffi::CStr::from_bytes_with_nul_unchecked`
* `ffi::FromBytesWithNulError`
* `fs::Metadata::modified`
* `fs::Metadata::accessed`
* `fs::Metadata::created`
* `sync::atomic::Atomic{Usize,Isize,Bool,Ptr}::compare_exchange`
* `sync::atomic::Atomic{Usize,Isize,Bool,Ptr}::compare_exchange_weak`
* `collections::{btree,hash}_map::{Occupied,Vacant,}Entry::key`
* `os::unix::net::{UnixStream, UnixListener, UnixDatagram, SocketAddr}`
* `SocketAddr::is_unnamed`
* `SocketAddr::as_pathname`
* `UnixStream::connect`
* `UnixStream::pair`
* `UnixStream::try_clone`
* `UnixStream::local_addr`
* `UnixStream::peer_addr`
* `UnixStream::set_read_timeout`
* `UnixStream::set_write_timeout`
* `UnixStream::read_timeout`
* `UnixStream::write_Timeout`
* `UnixStream::set_nonblocking`
* `UnixStream::take_error`
* `UnixStream::shutdown`
* Read/Write/RawFd impls for `UnixStream`
* `UnixListener::bind`
* `UnixListener::accept`
* `UnixListener::try_clone`
* `UnixListener::local_addr`
* `UnixListener::set_nonblocking`
* `UnixListener::take_error`
* `UnixListener::incoming`
* RawFd impls for `UnixListener`
* `UnixDatagram::bind`
* `UnixDatagram::unbound`
* `UnixDatagram::pair`
* `UnixDatagram::connect`
* `UnixDatagram::try_clone`
* `UnixDatagram::local_addr`
* `UnixDatagram::peer_addr`
* `UnixDatagram::recv_from`
* `UnixDatagram::recv`
* `UnixDatagram::send_to`
* `UnixDatagram::send`
* `UnixDatagram::set_read_timeout`
* `UnixDatagram::set_write_timeout`
* `UnixDatagram::read_timeout`
* `UnixDatagram::write_timeout`
* `UnixDatagram::set_nonblocking`
* `UnixDatagram::take_error`
* `UnixDatagram::shutdown`
* RawFd impls for `UnixDatagram`
* `{BTree,Hash}Map::values_mut`
* `<[_]>::binary_search_by_key`
Deprecated:
* `StaticCondvar` - this, and all other static synchronization primitives
below, are usable today through the lazy-static crate on
stable Rust today. Additionally, we'd like the non-static
versions to be directly usable in a static context one day,
so they're unlikely to be the final forms of the APIs in any
case.
* `CONDVAR_INIT`
* `StaticMutex`
* `MUTEX_INIT`
* `StaticRwLock`
* `RWLOCK_INIT`
* `iter::Peekable::is_empty`
Closes #27717
Closes #27720
Closes #30014
Closes #30425
Closes #30449
Closes #31190
Closes #31399
Closes #31767
Closes #32111
Closes #32281
Closes #32312
Closes #32551
Closes #33018
2016-05-25 20:36:09 -07:00
Alex Crichton
cae91d7c8c
std: Stabilize APIs for the 1.10 release
...
This commit applies the FCP decisions made by the libs team for the 1.10 cycle,
including both new stabilizations and deprecations. Specifically, the list of
APIs is:
Stabilized:
* `os::windows::fs::OpenOptionsExt::access_mode`
* `os::windows::fs::OpenOptionsExt::share_mode`
* `os::windows::fs::OpenOptionsExt::custom_flags`
* `os::windows::fs::OpenOptionsExt::attributes`
* `os::windows::fs::OpenOptionsExt::security_qos_flags`
* `os::unix::fs::OpenOptionsExt::custom_flags`
* `sync::Weak::new`
* `Default for sync::Weak`
* `panic::set_hook`
* `panic::take_hook`
* `panic::PanicInfo`
* `panic::PanicInfo::payload`
* `panic::PanicInfo::location`
* `panic::Location`
* `panic::Location::file`
* `panic::Location::line`
* `ffi::CStr::from_bytes_with_nul`
* `ffi::CStr::from_bytes_with_nul_unchecked`
* `ffi::FromBytesWithNulError`
* `fs::Metadata::modified`
* `fs::Metadata::accessed`
* `fs::Metadata::created`
* `sync::atomic::Atomic{Usize,Isize,Bool,Ptr}::compare_exchange`
* `sync::atomic::Atomic{Usize,Isize,Bool,Ptr}::compare_exchange_weak`
* `collections::{btree,hash}_map::{Occupied,Vacant,}Entry::key`
* `os::unix::net::{UnixStream, UnixListener, UnixDatagram, SocketAddr}`
* `SocketAddr::is_unnamed`
* `SocketAddr::as_pathname`
* `UnixStream::connect`
* `UnixStream::pair`
* `UnixStream::try_clone`
* `UnixStream::local_addr`
* `UnixStream::peer_addr`
* `UnixStream::set_read_timeout`
* `UnixStream::set_write_timeout`
* `UnixStream::read_timeout`
* `UnixStream::write_Timeout`
* `UnixStream::set_nonblocking`
* `UnixStream::take_error`
* `UnixStream::shutdown`
* Read/Write/RawFd impls for `UnixStream`
* `UnixListener::bind`
* `UnixListener::accept`
* `UnixListener::try_clone`
* `UnixListener::local_addr`
* `UnixListener::set_nonblocking`
* `UnixListener::take_error`
* `UnixListener::incoming`
* RawFd impls for `UnixListener`
* `UnixDatagram::bind`
* `UnixDatagram::unbound`
* `UnixDatagram::pair`
* `UnixDatagram::connect`
* `UnixDatagram::try_clone`
* `UnixDatagram::local_addr`
* `UnixDatagram::peer_addr`
* `UnixDatagram::recv_from`
* `UnixDatagram::recv`
* `UnixDatagram::send_to`
* `UnixDatagram::send`
* `UnixDatagram::set_read_timeout`
* `UnixDatagram::set_write_timeout`
* `UnixDatagram::read_timeout`
* `UnixDatagram::write_timeout`
* `UnixDatagram::set_nonblocking`
* `UnixDatagram::take_error`
* `UnixDatagram::shutdown`
* RawFd impls for `UnixDatagram`
* `{BTree,Hash}Map::values_mut`
* `<[_]>::binary_search_by_key`
Deprecated:
* `StaticCondvar` - this, and all other static synchronization primitives
below, are usable today through the lazy-static crate on
stable Rust today. Additionally, we'd like the non-static
versions to be directly usable in a static context one day,
so they're unlikely to be the final forms of the APIs in any
case.
* `CONDVAR_INIT`
* `StaticMutex`
* `MUTEX_INIT`
* `StaticRwLock`
* `RWLOCK_INIT`
* `iter::Peekable::is_empty`
Closes #27717
Closes #27720
cc #27784 (but encode methods still exist)
Closes #30014
Closes #30425
Closes #30449
Closes #31190
Closes #31399
Closes #31767
Closes #32111
Closes #32281
Closes #32312
Closes #32551
Closes #33018
2016-05-24 09:00:39 -07:00
Andrea Canciani
167b510b7c
Implement last for EscapeUnicode
...
Part of #24214 .
2016-04-20 10:33:27 +02:00
bors
9cf6fba955
Auto merge of #31253 - ranma42:improve-unicode-iter-offset, r=brson
...
Improve computation of offset in `EscapeUnicode`
Unify the computation of `offset` and use `leading_zeros` instead of manually scanning the bits.
This PR removes some duplicated code and makes it a little simpler .
The computation of `offset` is also faster, but it is unlikely to have an impact on actual code.
(split from #31049 )
2016-04-19 19:17:08 -07: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
Sean McArthur
e0945937c4
libcore: add Debug implementations to most missing types
2016-03-20 10:04:55 -07: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
73db76015e
doc: Fix a bunch of broken links
...
A few categories:
* Links into compiler docs were just all removed as we're not generating
compiler docs.
* Move up one more level to forcibly go to std docs to fix inlined documentation
across the facade crates.
2016-03-08 13:44:14 -08:00
Andrea Canciani
8984242373
Fix make tidy and name what is being computed
2016-01-28 15:18:42 +01:00
Andrea Canciani
79dfa25900
Improve naming and explanations
2016-01-28 15:13:43 +01:00
Andrea Canciani
7b33d39da9
Improve computation of EscapeUnicode offset field
...
Instead of iteratively scanning the bits, use `leading_zeros`.
2016-01-28 15:13:43 +01:00
Andrea Canciani
2fd2670ea0
Unify computation of length in EscapeUnicode
...
The `offset` value was computed both in `next` and in `size_hint`;
computing it in a single place ensures consistency and makes it easier
to apply improvements. The value is now computed as soon as the
iterator is constructed. This means that the time to compute it is
spent immediately and cannot be avoided, but it also guarantees that
it is only spent once.
2016-01-28 15:13:42 +01:00