]> git.lizzy.rs Git - rust.git/commitdiff
Improved comments to clarify sasumptions in str::strip_prefix
authorSOFe <sofe2038@gmail.com>
Tue, 26 Nov 2019 09:42:43 +0000 (17:42 +0800)
committerSOFe <sofe2038@gmail.com>
Tue, 26 Nov 2019 09:42:43 +0000 (17:42 +0800)
src/libcore/str/mod.rs

index 2527aee58cd4da6bac41608b4eb33575d52d0e94..4367cc54e70dbe9d47d043f7adf0404c6043d077 100644 (file)
@@ -3797,7 +3797,7 @@ pub fn trim_start_matches<'a, P: Pattern<'a>>(&'a self, pat: P) -> &'a str {
     /// the prefix is removed. Unlike `trim_start_matches`, this method removes the prefix exactly
     /// once.
     ///
-    /// If the string does not start with `prefix`, it is removed.
+    /// If the string does not start with `prefix`, `None` is returned.
     ///
     /// # Examples
     ///
@@ -3814,8 +3814,9 @@ pub fn trim_start_matches<'a, P: Pattern<'a>>(&'a self, pat: P) -> &'a str {
     pub fn strip_prefix<'a, P: Pattern<'a>>(&'a self, prefix: P) -> Option<&'a str> {
         let mut matcher = prefix.into_searcher(self);
         if let SearchStep::Match(start, len) = matcher.next() {
-            debug_assert_eq!(start, 0);
+            debug_assert_eq!(start, 0, "The first search step from Searcher must start from the front");
             unsafe {
+                // Searcher is known to return valid indices.
                 Some(self.get_unchecked(len..))
             }
         } else {
@@ -3825,11 +3826,11 @@ pub fn strip_prefix<'a, P: Pattern<'a>>(&'a self, prefix: P) -> Option<&'a str>
 
     /// Returns a string slice with the suffix removed.
     ///
-    /// If the string starts with the pattern `suffix`, `Some` is returned with the substring where
+    /// If the string ends with the pattern `suffix`, `Some` is returned with the substring where
     /// the suffix is removed. Unlike `trim_end_matches`, this method removes the suffix exactly
     /// once.
     ///
-    /// If the string does not start with `suffix`, it is removed.
+    /// If the string does not end with `suffix`, `None` is returned.
     ///
     /// # Examples
     ///
@@ -3849,8 +3850,9 @@ pub fn strip_suffix<'a, P>(&'a self, suffix: P) -> Option<&'a str>
     {
         let mut matcher = suffix.into_searcher(self);
         if let SearchStep::Match(start, end) = matcher.next_back() {
-            debug_assert_eq!(end, self.len());
+            debug_assert_eq!(end, self.len(), "The first search step from ReverseSearcher must include the last character");
             unsafe {
+                // Searcher is known to return valid indices.
                 Some(self.get_unchecked(..start))
             }
         } else {