about summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2017-03-06 22:06:30 +0100
committerSimon Sapin <simon.sapin@exyr.org>2017-03-14 10:02:55 +0100
commitb5f16a10e9406fc1c19294fee1c33e507a17458e (patch)
tree64a3688eb665f235e80fe2687c1087af93909693 /src/libcore
parent182044248ca2aa569844a25e73f90e5bc2fd05d3 (diff)
downloadrust-b5f16a10e9406fc1c19294fee1c33e507a17458e.tar.gz
rust-b5f16a10e9406fc1c19294fee1c33e507a17458e.zip
Replace Utf8Error::resume_from with Utf8Error::error_len
Their relationship is:

* `resume_from = error_len.map(|l| l + valid_up_to)`
* error_len is always one of None, Some(1), Some(2), or Some(3).

When I started using resume_from I almost always ended up subtracting
valid_up_to to obtain error_len.
Therefore the latter is what should be provided in the first place.
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/str/mod.rs22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/libcore/str/mod.rs b/src/libcore/str/mod.rs
index eb13d28e82d..63b12932c3d 100644
--- a/src/libcore/str/mod.rs
+++ b/src/libcore/str/mod.rs
@@ -125,7 +125,7 @@ Section: Creating a string
 #[stable(feature = "rust1", since = "1.0.0")]
 pub struct Utf8Error {
     valid_up_to: usize,
-    invalid_length: Option<u8>,
+    error_len: Option<u8>,
 }
 
 impl Utf8Error {
@@ -161,12 +161,14 @@ impl Utf8Error {
     ///   If a byte stream (such as a file or a network socket) is being decoded incrementally,
     ///   this could be a valid `char` whose UTF-8 byte sequence is spanning multiple chunks.
     ///
-    /// * `Some(index)`: an unexpected byte was encountered.
-    ///   The index provided is where decoding should resume
+    /// * `Some(len)`: an unexpected byte was encountered.
+    ///   The length provided is that of the invalid byte sequence
+    ///   that starts at the index given by `valid_up_to()`.
+    ///   Decoding should resume after that sequence
     ///   (after inserting a U+FFFD REPLACEMENT CHARACTER) in case of lossy decoding.
-    #[unstable(feature = "utf8_error_resume_from", reason ="new", issue = "0")]
-    pub fn resume_from(&self) -> Option<usize> {
-        self.invalid_length.map(|l| self.valid_up_to + l as usize)
+    #[unstable(feature = "utf8_error_error_len", reason ="new", issue = "0")]
+    pub fn error_len(&self) -> Option<usize> {
+        self.error_len.map(|len| len as usize)
     }
 }
 
@@ -316,9 +318,9 @@ pub unsafe fn from_utf8_unchecked(v: &[u8]) -> &str {
 #[stable(feature = "rust1", since = "1.0.0")]
 impl fmt::Display for Utf8Error {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        if let Some(invalid_length) = self.invalid_length {
+        if let Some(error_len) = self.error_len {
             write!(f, "invalid utf-8 sequence of {} bytes from index {}",
-                   invalid_length, self.valid_up_to)
+                   error_len, self.valid_up_to)
         } else {
             write!(f, "incomplete utf-8 byte sequence from index {}", self.valid_up_to)
         }
@@ -1263,10 +1265,10 @@ fn run_utf8_validation(v: &[u8]) -> Result<(), Utf8Error> {
     while index < len {
         let old_offset = index;
         macro_rules! err {
-            ($invalid_length: expr) => {
+            ($error_len: expr) => {
                 return Err(Utf8Error {
                     valid_up_to: old_offset,
-                    invalid_length: $invalid_length,
+                    error_len: $error_len,
                 })
             }
         }