Improvements to comments in libstd, libcore, liballoc.
This commit is contained in:
parent
9d71ec1358
commit
8629fd3e4e
15 changed files with 39 additions and 36 deletions
|
|
@ -1198,7 +1198,7 @@ impl<I: Iterator> Peekable<I> {
|
|||
}
|
||||
}
|
||||
|
||||
/// An iterator that rejects elements while `predicate` is true.
|
||||
/// An iterator that rejects elements while `predicate` returns `true`.
|
||||
///
|
||||
/// This `struct` is created by the [`skip_while`] method on [`Iterator`]. See its
|
||||
/// documentation for more.
|
||||
|
|
@ -1286,7 +1286,7 @@ impl<I: Iterator, P> Iterator for SkipWhile<I, P>
|
|||
impl<I, P> FusedIterator for SkipWhile<I, P>
|
||||
where I: FusedIterator, P: FnMut(&I::Item) -> bool {}
|
||||
|
||||
/// An iterator that only accepts elements while `predicate` is true.
|
||||
/// An iterator that only accepts elements while `predicate` returns `true`.
|
||||
///
|
||||
/// This `struct` is created by the [`take_while`] method on [`Iterator`]. See its
|
||||
/// documentation for more.
|
||||
|
|
|
|||
|
|
@ -1111,11 +1111,12 @@ impl<T: ?Sized> DerefMut for ManuallyDrop<T> {
|
|||
/// ```
|
||||
///
|
||||
/// The compiler then knows to not make any incorrect assumptions or optimizations on this code.
|
||||
//
|
||||
// FIXME before stabilizing, explain how to initialize a struct field-by-field.
|
||||
#[allow(missing_debug_implementations)]
|
||||
#[unstable(feature = "maybe_uninit", issue = "53491")]
|
||||
#[derive(Copy)]
|
||||
// NOTE after stabilizing `MaybeUninit` proceed to deprecate `mem::uninitialized`.
|
||||
// NOTE: after stabilizing `MaybeUninit`, proceed to deprecate `mem::uninitialized`.
|
||||
pub union MaybeUninit<T> {
|
||||
uninit: (),
|
||||
value: ManuallyDrop<T>,
|
||||
|
|
@ -1125,13 +1126,13 @@ pub union MaybeUninit<T> {
|
|||
impl<T: Copy> Clone for MaybeUninit<T> {
|
||||
#[inline(always)]
|
||||
fn clone(&self) -> Self {
|
||||
// Not calling T::clone(), we cannot know if we are initialized enough for that.
|
||||
// Not calling `T::clone()`, we cannot know if we are initialized enough for that.
|
||||
*self
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> MaybeUninit<T> {
|
||||
/// Create a new `MaybeUninit<T>` initialized with the given value.
|
||||
/// Creates a new `MaybeUninit<T>` initialized with the given value.
|
||||
///
|
||||
/// Note that dropping a `MaybeUninit<T>` will never call `T`'s drop code.
|
||||
/// It is your responsibility to make sure `T` gets dropped if it got initialized.
|
||||
|
|
@ -1239,6 +1240,7 @@ impl<T> MaybeUninit<T> {
|
|||
/// let x_vec = unsafe { &*x.as_ptr() };
|
||||
/// // We have created a reference to an uninitialized vector! This is undefined behavior.
|
||||
/// ```
|
||||
///
|
||||
/// (Notice that the rules around references to uninitialized data are not finalized yet, but
|
||||
/// until they are, it is advisable to avoid them.)
|
||||
#[unstable(feature = "maybe_uninit", issue = "53491")]
|
||||
|
|
@ -1277,6 +1279,7 @@ impl<T> MaybeUninit<T> {
|
|||
/// let x_vec = unsafe { &mut *x.as_mut_ptr() };
|
||||
/// // We have created a reference to an uninitialized vector! This is undefined behavior.
|
||||
/// ```
|
||||
///
|
||||
/// (Notice that the rules around references to uninitialized data are not finalized yet, but
|
||||
/// until they are, it is advisable to avoid them.)
|
||||
#[unstable(feature = "maybe_uninit", issue = "53491")]
|
||||
|
|
|
|||
|
|
@ -326,7 +326,7 @@ pub fn algorithm_m<T: RawFloat>(f: &Big, e: i16) -> T {
|
|||
round_by_remainder(v, rem, q, z)
|
||||
}
|
||||
|
||||
/// Skip over most Algorithm M iterations by checking the bit length.
|
||||
/// Skips over most Algorithm M iterations by checking the bit length.
|
||||
fn quick_start<T: RawFloat>(u: &mut Big, v: &mut Big, k: &mut i16) {
|
||||
// The bit length is an estimate of the base two logarithm, and log(u / v) = log(u) - log(v).
|
||||
// The estimate is off by at most 1, but always an under-estimate, so the error on log(u)
|
||||
|
|
|
|||
|
|
@ -304,8 +304,8 @@ fn simplify(decimal: &mut Decimal) {
|
|||
}
|
||||
}
|
||||
|
||||
/// Quick and dirty upper bound on the size (log10) of the largest value that Algorithm R and
|
||||
/// Algorithm M will compute while working on the given decimal.
|
||||
/// Returns a quick-an-dirty upper bound on the size (log10) of the largest value that Algorithm R
|
||||
/// and Algorithm M will compute while working on the given decimal.
|
||||
fn bound_intermediate_digits(decimal: &Decimal, e: i64) -> u64 {
|
||||
// We don't need to worry too much about overflow here thanks to trivial_cases() and the
|
||||
// parser, which filter out the most extreme inputs for us.
|
||||
|
|
@ -324,7 +324,7 @@ fn bound_intermediate_digits(decimal: &Decimal, e: i64) -> u64 {
|
|||
}
|
||||
}
|
||||
|
||||
/// Detect obvious overflows and underflows without even looking at the decimal digits.
|
||||
/// Detects obvious overflows and underflows without even looking at the decimal digits.
|
||||
fn trivial_cases<T: RawFloat>(decimal: &Decimal) -> Option<T> {
|
||||
// There were zeros but they were stripped by simplify()
|
||||
if decimal.integral.is_empty() && decimal.fractional.is_empty() {
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ pub fn parse_decimal(s: &str) -> ParseResult {
|
|||
}
|
||||
}
|
||||
|
||||
/// Carve off decimal digits up to the first non-digit character.
|
||||
/// Carves off decimal digits up to the first non-digit character.
|
||||
fn eat_digits(s: &[u8]) -> (&[u8], &[u8]) {
|
||||
let mut i = 0;
|
||||
while i < s.len() && b'0' <= s[i] && s[i] <= b'9' {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ use num::dec2flt::rawfp::RawFloat;
|
|||
///
|
||||
/// - Any number from `(mant - minus) * 2^exp` to `(mant + plus) * 2^exp` will
|
||||
/// round to the original value. The range is inclusive only when
|
||||
/// `inclusive` is true.
|
||||
/// `inclusive` is `true`.
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
|
||||
pub struct Decoded {
|
||||
/// The scaled mantissa.
|
||||
|
|
|
|||
|
|
@ -315,15 +315,15 @@ fn digits_to_dec_str<'a>(buf: &'a [u8], exp: i16, frac_digits: usize,
|
|||
}
|
||||
}
|
||||
|
||||
/// Formats given decimal digits `0.<...buf...> * 10^exp` into the exponential form
|
||||
/// with at least given number of significant digits. When `upper` is true,
|
||||
/// Formats the given decimal digits `0.<...buf...> * 10^exp` into the exponential
|
||||
/// form with at least the given number of significant digits. When `upper` is `true`,
|
||||
/// the exponent will be prefixed by `E`; otherwise that's `e`. The result is
|
||||
/// stored to the supplied parts array and a slice of written parts is returned.
|
||||
///
|
||||
/// `min_digits` can be less than the number of actual significant digits in `buf`;
|
||||
/// it will be ignored and full digits will be printed. It is only used to print
|
||||
/// additional zeroes after rendered digits. Thus `min_digits` of 0 means that
|
||||
/// it will only print given digits and nothing else.
|
||||
/// additional zeroes after rendered digits. Thus, `min_digits == 0` means that
|
||||
/// it will only print the given digits and nothing else.
|
||||
fn digits_to_exp_str<'a>(buf: &'a [u8], exp: i16, min_ndigits: usize, upper: bool,
|
||||
parts: &'a mut [Part<'a>]) -> &'a [Part<'a>] {
|
||||
assert!(!buf.is_empty());
|
||||
|
|
@ -384,7 +384,7 @@ fn determine_sign(sign: Sign, decoded: &FullDecoded, negative: bool) -> &'static
|
|||
}
|
||||
}
|
||||
|
||||
/// Formats given floating point number into the decimal form with at least
|
||||
/// Formats the given floating point number into the decimal form with at least
|
||||
/// given number of fractional digits. The result is stored to the supplied parts
|
||||
/// array while utilizing given byte buffer as a scratch. `upper` is currently
|
||||
/// unused but left for the future decision to change the case of non-finite values,
|
||||
|
|
@ -438,7 +438,7 @@ pub fn to_shortest_str<'a, T, F>(mut format_shortest: F, v: T,
|
|||
}
|
||||
}
|
||||
|
||||
/// Formats given floating point number into the decimal form or
|
||||
/// Formats the given floating point number into the decimal form or
|
||||
/// the exponential form, depending on the resulting exponent. The result is
|
||||
/// stored to the supplied parts array while utilizing given byte buffer
|
||||
/// as a scratch. `upper` is used to determine the case of non-finite values
|
||||
|
|
@ -497,7 +497,7 @@ pub fn to_shortest_exp_str<'a, T, F>(mut format_shortest: F, v: T,
|
|||
}
|
||||
}
|
||||
|
||||
/// Returns rather crude approximation (upper bound) for the maximum buffer size
|
||||
/// Returns a rather crude approximation (upper bound) for the maximum buffer size
|
||||
/// calculated from the given decoded exponent.
|
||||
///
|
||||
/// The exact limit is:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
//! Types which pin data to its location in memory
|
||||
//! Types that pin data to its location in memory.
|
||||
//!
|
||||
//! It is sometimes useful to have objects that are guaranteed to not move,
|
||||
//! in the sense that their placement in memory does not change, and can thus be relied upon.
|
||||
|
|
|
|||
|
|
@ -2968,7 +2968,7 @@ impl str {
|
|||
///
|
||||
/// The returned iterator will be a [`DoubleEndedIterator`] if the pattern
|
||||
/// allows a reverse search and forward/reverse search yields the same
|
||||
/// elements. This is true for, eg, [`char`] but not for `&str`.
|
||||
/// elements. This is true for, e.g., [`char`], but not for `&str`.
|
||||
///
|
||||
/// [`DoubleEndedIterator`]: iter/trait.DoubleEndedIterator.html
|
||||
///
|
||||
|
|
@ -3143,7 +3143,7 @@ impl str {
|
|||
///
|
||||
/// The returned iterator will be a [`DoubleEndedIterator`] if the pattern
|
||||
/// allows a reverse search and forward/reverse search yields the same
|
||||
/// elements. This is true for, eg, [`char`] but not for `&str`.
|
||||
/// elements. This is true for, e.g., [`char`], but not for `&str`.
|
||||
///
|
||||
/// [`DoubleEndedIterator`]: iter/trait.DoubleEndedIterator.html
|
||||
///
|
||||
|
|
@ -3326,7 +3326,7 @@ impl str {
|
|||
///
|
||||
/// The returned iterator will be a [`DoubleEndedIterator`] if the pattern
|
||||
/// allows a reverse search and forward/reverse search yields the same
|
||||
/// elements. This is true for, eg, [`char`] but not for `&str`.
|
||||
/// elements. This is true for, e.g., [`char`], but not for `&str`.
|
||||
///
|
||||
/// [`DoubleEndedIterator`]: iter/trait.DoubleEndedIterator.html
|
||||
///
|
||||
|
|
@ -3402,7 +3402,7 @@ impl str {
|
|||
///
|
||||
/// The returned iterator will be a [`DoubleEndedIterator`] if the pattern
|
||||
/// allows a reverse search and forward/reverse search yields the same
|
||||
/// elements. This is true for, eg, [`char`] but not for `&str`.
|
||||
/// elements. This is true for, e.g., [`char`], but not for `&str`.
|
||||
///
|
||||
/// [`DoubleEndedIterator`]: iter/trait.DoubleEndedIterator.html
|
||||
///
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ impl Waker {
|
|||
unsafe { (self.waker.vtable.wake)(self.waker.data) }
|
||||
}
|
||||
|
||||
/// Returns whether or not this `Waker` and other `Waker` have awaken the same task.
|
||||
/// Returns `true` if this `Waker` and another `Waker` have awoken the same task.
|
||||
///
|
||||
/// This function works on a best-effort basis, and may return false even
|
||||
/// when the `Waker`s would awaken the same task. However, if this function
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ use super::table::{self, Bucket, EmptyBucket, Fallibility, FullBucket, FullBucke
|
|||
use super::table::BucketState::{Empty, Full};
|
||||
use super::table::Fallibility::{Fallible, Infallible};
|
||||
|
||||
const MIN_NONZERO_RAW_CAPACITY: usize = 32; // must be a power of two
|
||||
const MIN_NONZERO_RAW_CAPACITY: usize = 32; // must be a power of two
|
||||
|
||||
/// The default behavior of HashMap implements a maximum load factor of 90.9%.
|
||||
#[derive(Clone)]
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ use super::Recover;
|
|||
use super::map::{self, HashMap, Keys, RandomState};
|
||||
|
||||
// Future Optimization (FIXME!)
|
||||
// =============================
|
||||
// ============================
|
||||
//
|
||||
// Iteration over zero sized values is a noop. There is no need
|
||||
// for `bucket.val` in the case of HashSet. I suppose we would need HKT
|
||||
|
|
|
|||
|
|
@ -211,7 +211,7 @@ pub struct DirBuilder {
|
|||
recursive: bool,
|
||||
}
|
||||
|
||||
/// How large a buffer to pre-allocate before reading the entire file.
|
||||
/// Indicates how large a buffer to pre-allocate before reading the entire file.
|
||||
fn initial_buffer_size(file: &File) -> usize {
|
||||
// Allocate one extra byte so the buffer doesn't need to grow before the
|
||||
// final `read` call at the end of the file. Don't worry about `usize`
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ impl Condvar {
|
|||
/// // Wait for the thread to start up.
|
||||
/// let &(ref lock, ref cvar) = &*pair;
|
||||
/// let mut started = lock.lock().unwrap();
|
||||
/// // As long as the value inside the `Mutex` is false, we wait.
|
||||
/// // As long as the value inside the `Mutex` is `false`, we wait.
|
||||
/// while !*started {
|
||||
/// started = cvar.wait(started).unwrap();
|
||||
/// }
|
||||
|
|
@ -254,7 +254,7 @@ impl Condvar {
|
|||
///
|
||||
/// // Wait for the thread to start up.
|
||||
/// let &(ref lock, ref cvar) = &*pair;
|
||||
/// // As long as the value inside the `Mutex` is false, we wait.
|
||||
/// // As long as the value inside the `Mutex` is `false`, we wait.
|
||||
/// let _guard = cvar.wait_until(lock.lock().unwrap(), |started| { *started }).unwrap();
|
||||
/// ```
|
||||
#[unstable(feature = "wait_until", issue = "47960")]
|
||||
|
|
@ -311,7 +311,7 @@ impl Condvar {
|
|||
/// // Wait for the thread to start up.
|
||||
/// let &(ref lock, ref cvar) = &*pair;
|
||||
/// let mut started = lock.lock().unwrap();
|
||||
/// // As long as the value inside the `Mutex` is false, we wait.
|
||||
/// // As long as the value inside the `Mutex` is `false`, we wait.
|
||||
/// loop {
|
||||
/// let result = cvar.wait_timeout_ms(started, 10).unwrap();
|
||||
/// // 10 milliseconds have passed, or maybe the value changed!
|
||||
|
|
@ -384,7 +384,7 @@ impl Condvar {
|
|||
/// // wait for the thread to start up
|
||||
/// let &(ref lock, ref cvar) = &*pair;
|
||||
/// let mut started = lock.lock().unwrap();
|
||||
/// // as long as the value inside the `Mutex` is false, we wait
|
||||
/// // as long as the value inside the `Mutex` is `false`, we wait
|
||||
/// loop {
|
||||
/// let result = cvar.wait_timeout(started, Duration::from_millis(10)).unwrap();
|
||||
/// // 10 milliseconds have passed, or maybe the value changed!
|
||||
|
|
@ -518,7 +518,7 @@ impl Condvar {
|
|||
/// // Wait for the thread to start up.
|
||||
/// let &(ref lock, ref cvar) = &*pair;
|
||||
/// let mut started = lock.lock().unwrap();
|
||||
/// // As long as the value inside the `Mutex` is false, we wait.
|
||||
/// // As long as the value inside the `Mutex` is `false`, we wait.
|
||||
/// while !*started {
|
||||
/// started = cvar.wait(started).unwrap();
|
||||
/// }
|
||||
|
|
@ -558,7 +558,7 @@ impl Condvar {
|
|||
/// // Wait for the thread to start up.
|
||||
/// let &(ref lock, ref cvar) = &*pair;
|
||||
/// let mut started = lock.lock().unwrap();
|
||||
/// // As long as the value inside the `Mutex` is false, we wait.
|
||||
/// // As long as the value inside the `Mutex` is `false`, we wait.
|
||||
/// while !*started {
|
||||
/// started = cvar.wait(started).unwrap();
|
||||
/// }
|
||||
|
|
|
|||
|
|
@ -37,9 +37,9 @@ pub struct Pipes {
|
|||
///
|
||||
/// The ours/theirs pipes are *not* specifically readable or writable. Each
|
||||
/// one only supports a read or a write, but which is which depends on the
|
||||
/// boolean flag given. If `ours_readable` is true then `ours` is readable where
|
||||
/// `theirs` is writable. Conversely if `ours_readable` is false then `ours` is
|
||||
/// writable where `theirs` is readable.
|
||||
/// boolean flag given. If `ours_readable` is `true`, then `ours` is readable and
|
||||
/// `theirs` is writable. Conversely, if `ours_readable` is `false`, then `ours`
|
||||
/// is writable and `theirs` is readable.
|
||||
///
|
||||
/// Also note that the `ours` pipe is always a handle opened up in overlapped
|
||||
/// mode. This means that technically speaking it should only ever be used
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue