Additional docs for Vec, String, and slice trait impls
This commit is contained in:
parent
ccd96c945f
commit
b2ac1c9c6b
@ -1629,6 +1629,43 @@ impl hash::Hash for String {
|
||||
}
|
||||
}
|
||||
|
||||
/// Implements the `+` operator for concatenating two strings.
|
||||
///
|
||||
/// This consumes the `String` on the left-hand side and re-uses its buffer (growing it if
|
||||
/// necessary). This is done to avoid allocating a new `String` and copying the entire contents on
|
||||
/// every operation, which would lead to `O(n^2)` running time when building an `n`-byte string by
|
||||
/// repeated concatenation.
|
||||
///
|
||||
/// The string on the right-hand side is only borrowed; its contents are copied into the returned
|
||||
/// `String`.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// Concatenating two `String`s takes the first by value and borrows the second:
|
||||
///
|
||||
/// ```
|
||||
/// let a = String::from("hello");
|
||||
/// let b = String::from(" world");
|
||||
/// let c = a + &b;
|
||||
/// // `a` is moved and can no longer be used here.
|
||||
/// ```
|
||||
///
|
||||
/// If you want to keep using the first `String`, you can clone it and append to the clone instead:
|
||||
///
|
||||
/// ```
|
||||
/// let a = String::from("hello");
|
||||
/// let b = String::from(" world");
|
||||
/// let c = a.clone() + &b;
|
||||
/// // `a` is still valid here.
|
||||
/// ```
|
||||
///
|
||||
/// Concatenating `&str` slices can be done by converting the first to a `String`:
|
||||
///
|
||||
/// ```
|
||||
/// let a = "hello";
|
||||
/// let b = " world";
|
||||
/// let c = a.to_string() + b;
|
||||
/// ```
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<'a> Add<&'a str> for String {
|
||||
type Output = String;
|
||||
@ -1640,6 +1677,11 @@ impl<'a> Add<&'a str> for String {
|
||||
}
|
||||
}
|
||||
|
||||
/// Implements the `+=` operator for appending to a `String`.
|
||||
///
|
||||
/// This has the same behavior as the [`push_str()`] method.
|
||||
///
|
||||
/// [`push_str()`]: struct.String.html#method.push_str
|
||||
#[stable(feature = "stringaddassign", since = "1.12.0")]
|
||||
impl<'a> AddAssign<&'a str> for String {
|
||||
#[inline]
|
||||
|
@ -1776,6 +1776,7 @@ array_impls! {
|
||||
30 31 32
|
||||
}
|
||||
|
||||
/// Implements comparison of vectors, lexicographically.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T: PartialOrd> PartialOrd for Vec<T> {
|
||||
#[inline]
|
||||
@ -1787,6 +1788,7 @@ impl<T: PartialOrd> PartialOrd for Vec<T> {
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T: Eq> Eq for Vec<T> {}
|
||||
|
||||
/// Implements ordering of vectors, lexicographically.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T: Ord> Ord for Vec<T> {
|
||||
#[inline]
|
||||
|
@ -2202,6 +2202,7 @@ impl<A, B> PartialEq<[B]> for [A] where A: PartialEq<B> {
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T: Eq> Eq for [T] {}
|
||||
|
||||
/// Implements comparison of vectors lexicographically.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T: Ord> Ord for [T] {
|
||||
fn cmp(&self, other: &[T]) -> Ordering {
|
||||
@ -2209,6 +2210,7 @@ impl<T: Ord> Ord for [T] {
|
||||
}
|
||||
}
|
||||
|
||||
/// Implements comparison of vectors lexicographically.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T: PartialOrd> PartialOrd for [T] {
|
||||
fn partial_cmp(&self, other: &[T]) -> Option<Ordering> {
|
||||
|
@ -1366,6 +1366,13 @@ mod traits {
|
||||
use ops;
|
||||
use str::eq_slice;
|
||||
|
||||
/// Implements ordering of strings.
|
||||
///
|
||||
/// Strings are ordered lexicographically by their byte values. This orders Unicode code
|
||||
/// points based on their positions in the code charts. This is not necessarily the same as
|
||||
/// "alphabetical" order, which varies by language and locale. Sorting strings according to
|
||||
/// culturally-accepted standards requires locale-specific data that is outside the scope of
|
||||
/// the `str` type.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl Ord for str {
|
||||
#[inline]
|
||||
@ -1387,6 +1394,13 @@ mod traits {
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl Eq for str {}
|
||||
|
||||
/// Implements comparison operations on strings.
|
||||
///
|
||||
/// Strings are compared lexicographically by their byte values. This compares Unicode code
|
||||
/// points based on their positions in the code charts. This is not necessarily the same as
|
||||
/// "alphabetical" order, which varies by language and locale. Comparing strings according to
|
||||
/// culturally-accepted standards requires locale-specific data that is outside the scope of
|
||||
/// the `str` type.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl PartialOrd for str {
|
||||
#[inline]
|
||||
|
Loading…
Reference in New Issue
Block a user